最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

這個(gè)runnable為何只進(jìn)行一個(gè)線(xiàn)程?

這個(gè)runnable為何只進(jìn)行一個(gè)線(xiàn)程?

冷魘 2017-02-03 21:07:49
public class Runnable01 implements Runnable{ private int ticketsCont=50;? ? private ?Lock lock=new ReentrantLock(); ? ? public Runnable01() { // TODO Auto-generated constructor stub? ? ? ? ? ? } public void run(){? ? while(true){ lock.lock(); if (ticketsCont>0) { ?? ? ?ticketsCont--;? ? ?System.out.println(Thread.currentThread().getName()+"賣(mài)了1張,剩余為:"+ticketsCont); } lock.unlock(); if (ticketsCont==0) { break; } ? ? }? ? }? ??? ? public static void main(String[] args) throws InterruptedException { Runnable01 mt=new Runnable01(); Thread th1=new Thread(mt,"窗口1"); Thread th2=new Thread(mt,"窗口2"); Thread th3=new Thread(mt,"窗口3"); th1.start(); th2.start(); th3.start(); }}重復(fù)了幾次,都是產(chǎn)生這種結(jié)果,不應(yīng)該是1,2,3窗口都有么?:窗口1賣(mài)了1張,剩余為:49窗口1賣(mài)了1張,剩余為:48窗口1賣(mài)了1張,剩余為:47窗口1賣(mài)了1張,剩余為:46窗口1賣(mài)了1張,剩余為:45窗口1賣(mài)了1張,剩余為:44窗口1賣(mài)了1張,剩余為:43窗口1賣(mài)了1張,剩余為:42窗口1賣(mài)了1張,剩余為:41窗口1賣(mài)了1張,剩余為:40窗口1賣(mài)了1張,剩余為:39窗口1賣(mài)了1張,剩余為:38窗口1賣(mài)了1張,剩余為:37窗口1賣(mài)了1張,剩余為:36窗口1賣(mài)了1張,剩余為:35窗口1賣(mài)了1張,剩余為:34窗口1賣(mài)了1張,剩余為:33窗口1賣(mài)了1張,剩余為:32窗口1賣(mài)了1張,剩余為:31窗口1賣(mài)了1張,剩余為:30窗口1賣(mài)了1張,剩余為:29窗口1賣(mài)了1張,剩余為:28窗口1賣(mài)了1張,剩余為:27窗口1賣(mài)了1張,剩余為:26窗口1賣(mài)了1張,剩余為:25窗口1賣(mài)了1張,剩余為:24窗口1賣(mài)了1張,剩余為:23窗口1賣(mài)了1張,剩余為:22窗口1賣(mài)了1張,剩余為:21窗口1賣(mài)了1張,剩余為:20窗口1賣(mài)了1張,剩余為:19窗口1賣(mài)了1張,剩余為:18窗口1賣(mài)了1張,剩余為:17窗口1賣(mài)了1張,剩余為:16窗口1賣(mài)了1張,剩余為:15窗口1賣(mài)了1張,剩余為:14窗口1賣(mài)了1張,剩余為:13窗口1賣(mài)了1張,剩余為:12窗口1賣(mài)了1張,剩余為:11窗口1賣(mài)了1張,剩余為:10窗口1賣(mài)了1張,剩余為:9窗口1賣(mài)了1張,剩余為:8窗口1賣(mài)了1張,剩余為:7窗口1賣(mài)了1張,剩余為:6窗口1賣(mài)了1張,剩余為:5窗口1賣(mài)了1張,剩余為:4窗口1賣(mài)了1張,剩余為:3窗口1賣(mài)了1張,剩余為:2窗口1賣(mài)了1張,剩余為:1窗口1賣(mài)了1張,剩余為:0
查看完整描述

3 回答

已采納
?
按照自己的節(jié)奏前行

TA貢獻(xiàn)90條經(jīng)驗(yàn) 獲得超70個(gè)贊

public?class?Runnable01?implements?Runnable{

private?int?ticketsCont=50;
????private??Lock?lock=new?ReentrantLock();
????public?Runnable01()?{
//?TODO?Auto-generated?constructor?stub
???????
????}
public?void?run(){
???
while(true){
lock.lock();
if?(ticketsCont>0)?{	?
?????ticketsCont--;
?????System.out.println(Thread.currentThread().getName()+"賣(mài)了1張,剩余為:"+ticketsCont);
}
lock.unlock();
//一般在這里加個(gè)暫停時(shí)間,給其他線(xiàn)程讓步下就好了,看這里看這里看這里!!!------
try?{
		Thread.sleep(1000);
	}?catch?(InterruptedException?e)?{
	e.printStackTrace();
	}
if?(ticketsCont==0)?{
break;
}
????}
????}
????
????public?static?void?main(String[]?args)?throws?InterruptedException?{
Runnable01?mt=new?Runnable01();
Thread?th1=new?Thread(mt,"窗口1");
Thread?th2=new?Thread(mt,"窗口2");
Thread?th3=new?Thread(mt,"窗口3");
th1.start();
th2.start();
th3.start();
}
}


查看完整回答
2 反對(duì) 回復(fù) 2017-02-04
?
慕粉1529473653

TA貢獻(xiàn)8條經(jīng)驗(yàn) 獲得超2個(gè)贊

你是讓窗口一的線(xiàn)程先開(kāi)始,所以也就執(zhí)行線(xiàn)程一,因?yàn)橛?jì)算機(jī)處理很快,所以當(dāng)處理完線(xiàn)程一的if?(ticketsCont>0)語(yǔ)句后解鎖然后又進(jìn)入下一個(gè)循環(huán)了。

要知道計(jì)算機(jī)是從上往下處理的。

正解就是在解鎖后加入一段時(shí)間的休眠了。如云naive所示。

查看完整回答
1 反對(duì) 回復(fù) 2017-02-04
  • 3 回答
  • 0 關(guān)注
  • 1406 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)