[問答題] 請(qǐng)完成下列Java程序:運(yùn)行3個(gè)線程有自己的標(biāo)志,用a,b,c表示,每個(gè)線程顯示一個(gè)“Start”信息和一個(gè)“End”信息并且間隔地顯示2個(gè)“Loo
[問答題] 請(qǐng)完成下列Java程序:運(yùn)行3個(gè)線程有自己的標(biāo)志,用a,b,c表示,每個(gè)線程顯示一個(gè)“Start”信息和一個(gè)“End”信息并且間隔地顯示2個(gè)“Loop”信息(間隔變化為0.5~2秒之間的隨機(jī)延遲)。
程序運(yùn)行結(jié)果如下(注:由于事件間隔為隨機(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 ex5_2 implements Runnable
static char flag5_2=’a’;
public static void main(String[] args)
ex5_2 obj5_2=new ex5_2();Thread thread5_2=new Thread(obj5_2);
Thread5_2.start();
thread5_2=new Thread(obj2_2);
thread5_2.start();
threa’d5_2=new Thread(obj2_2);
thread5_2.start();
public void run() char myflag5_2;synchronized(this)
______;
System.out.println(myflag5
正確答案:myflag5_2=flag5_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è)線程使用。obj5_2對(duì)象。線程調(diào)用start()方法來(lái)中斷,使一個(gè)新的線程開始執(zhí)行,并且調(diào)用run()方法。第1個(gè)空,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)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。