[問(wèn)答題] 請(qǐng)完成下列Java程序:運(yùn)行3個(gè)線程,每一個(gè)線程有自己的標(biāo)志,用a,b,c表示,每個(gè)線程顯示一個(gè)“Start”信息和一個(gè)“End”信息并且間隔地顯示
[問(wèn)答題] 請(qǐng)完成下列Java程序:運(yùn)行3個(gè)線程,每一個(gè)線程有自己的標(biāo)志,用a,b,c表示,每個(gè)線程顯示一個(gè)“Start”信息和一個(gè)“End”信息并且間隔地顯示2個(gè)“Loop”信息(間隔變化為(0.5-2)秒之間的隨機(jī)延遲)。
程序運(yùn)行結(jié)果如下:(注:由于時(shí)間間隔為隨機(jī)數(shù),所以,運(yùn)行結(jié)果的順序不惟一)
a Start
b Start
c Start
b Loop
a Loop
b Loop
b End
c Loop
a Loop
a End
c Loop
c End
注意:請(qǐng)勿改動(dòng)main()主方法和其他已有語(yǔ)句內(nèi)容,僅在下劃線處填入適當(dāng)?shù)恼Z(yǔ)句。
public class ex2_2 implements Runnable
static char flag2_2 = ’a’;
public static void main(String[] arg)
ex2_2 obj2_2 = new ex2_2();
Thread thread2_2 = new Thread(obi2_2);
thread2_2.start();
thread2_2 = new Thread(obj2_2);
thread2 2.start();
thread2_2 = new Thread(obi2_2);
thread2_2.start ( );
public void run()char myflag2_2;
synchronized(this)
_________________;
System.out.
正確答案:myflag2_2 = flag2_2++((int)((high-low+1)*(Math.random())))+low
參考解析:本題主要考查線程的創(chuàng)建與同步和控制隨機(jī)數(shù)產(chǎn)生范圍的算法。解題關(guān)鍵是,熟悉線程的概念和使用,線程的同步控制, char類型數(shù)據(jù)的操作,以及熟悉隨機(jī)數(shù)產(chǎn)生的方法Math.random(),并且能夠進(jìn)一步根據(jù)需要控制隨機(jī)數(shù)產(chǎn)生的范圍。在本題中,main()方法中創(chuàng)建3個(gè)線程,這3個(gè)線程使用obj2_2對(duì)象。線程調(diào)用start()方法來(lái)中斷,使一個(gè)新的線程開始執(zhí)行,并且調(diào)用run()方法。第1空,run()方法為自己設(shè)置一個(gè)線程的標(biāo)志,并為下一個(gè)線程的使用增加這個(gè)標(biāo)志值,由于此時(shí)線程正在處理中,因此在同步塊中完成修改標(biāo)志的語(yǔ)句放在同步塊中。第2個(gè)空,通過(guò)low和high兩個(gè)參數(shù),控制產(chǎn)生隨機(jī)數(shù)的范圍,將基本的數(shù)學(xué)思想應(yīng)用于程序設(shè)計(jì)中。
詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。