![Java多線程題目及答案_第1頁(yè)](http://file4.renrendoc.com/view/cf20759cb2f42e2ca116ab457398f8e7/cf20759cb2f42e2ca116ab457398f8e71.gif)
![Java多線程題目及答案_第2頁(yè)](http://file4.renrendoc.com/view/cf20759cb2f42e2ca116ab457398f8e7/cf20759cb2f42e2ca116ab457398f8e72.gif)
![Java多線程題目及答案_第3頁(yè)](http://file4.renrendoc.com/view/cf20759cb2f42e2ca116ab457398f8e7/cf20759cb2f42e2ca116ab457398f8e73.gif)
![Java多線程題目及答案_第4頁(yè)](http://file4.renrendoc.com/view/cf20759cb2f42e2ca116ab457398f8e7/cf20759cb2f42e2ca116ab457398f8e74.gif)
![Java多線程題目及答案_第5頁(yè)](http://file4.renrendoc.com/view/cf20759cb2f42e2ca116ab457398f8e7/cf20759cb2f42e2ca116ab457398f8e75.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、任務(wù)8多線程編程一、實(shí)驗(yàn)?zāi)康?掌握線程的概念、線程的生命周期。.掌握采用繼承Thread類(lèi)創(chuàng)建子線程。.掌握使用Runnable接口使類(lèi)線程化。二、實(shí)驗(yàn)要求.掌握線程的概念、線程的生命周期。.掌握使用Runnable接口使類(lèi)線程化。三、實(shí)驗(yàn)內(nèi)容一、輸入以下源代碼,多次運(yùn)行程序,分析輸出結(jié)果.繼承Thread類(lèi)創(chuàng)建子線程public classMultiThreadExamplepublic static void main(String args)new ThreadDemo( A ).start(); 啟動(dòng)線程 Anew ThreadDemo( B ).start(); 啟動(dòng)線程 Bclas
2、s ThreadDemo extends Threadpublic ThreadDemo(String n) super(n); 線程名稱public void run()for(int i =0;i5;i+)try /睡眠一段隨機(jī)時(shí)間Thread.sleep(long)(Math. random() * 1000); catch(InterruptedException e) e.printStackTrace();System.outprint(getName(); 打印線程名稱2.使用Runnable接口使類(lèi)線程化classMyThread1 implements Runnable /
3、實(shí)現(xiàn) Runnable 接 口創(chuàng)建線程類(lèi) MyThread public void run() / 實(shí)現(xiàn) Runnable 接口的 run()方法for (int i = 0; i 9; i+) System.out.println(Thread. currentThread ().getName()+ i + );public classThreadExample2 public static void main(String args) MyThreadl mt = new MyThread1(); / 創(chuàng)建線程類(lèi) MyThread 的實(shí)例 tThread t = new Thread(m
4、t); / 創(chuàng)建 Thread 類(lèi)的實(shí)例 tt.start(); /啟動(dòng)線程for (int i = 0; i 9; i+) System.out.println(Thread. currentThread ().getName()+ i + );3多次運(yùn)行以下程序public classTst11 implements Runnable private int x;private int y;public static void main(String args) Tst11 t = new Tst11();new Thread(t).start();new Thread(t).start(
5、);public void run() for (int i=1;i20;i+) try Thread.sleep(200); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace();x+;y+;System.out.println( x= + x + ,y= + y);判斷以上代碼的運(yùn)行結(jié)果是?A編譯不通過(guò)B輸出行類(lèi)似x=1,y=1 ,總是重復(fù)一次。C輸出行類(lèi)似x=1,y=1 ,遞增,每行不重復(fù)。D輸出行類(lèi)似x=2,y=3 , x和y的值不一定相等 分析結(jié)果并給出原因二、編寫(xiě)線程
6、程序1要求:設(shè)計(jì)一個(gè)線程操作類(lèi),要求產(chǎn)生3個(gè)線程對(duì)象,并可以分別設(shè)置三個(gè)線程的休眠時(shí)間,如下所示:1)線程A休眠10秒2)線程B,休眠20秒3)線程C,休眠30秒package 線程;class MyThread extends Threadprivate int sleeptime;public MyThread(String s) super(s);public void setSleepTime(int sleeptime) this.sleeptime= sleeptime;public void run() try System. out .println(Thread.curren
7、tThread().getName()+ 進(jìn)入休眠,休眠時(shí)間為:+sleeptime/1000+ 秒)Thread.sleep(sleeptimess);System. out .println(Thread.currentThread().getName()+ 休眠結(jié)束。); catch (InterruptedException e) / TODO自動(dòng)生成的catch 塊 e.printStackTrace();public class Test1 public static void main(String args) MyThread A = new MyThread( 線程 A);A
8、.setSleepTime(10000);MyThread B = new MyThread( 線程 B);B.setSleepTime(20000);MyThread C = new MyThread( 線程 C);C.setSleepTime(30000);A.start();B.start();C.start();2編寫(xiě)線程程序,要求:一個(gè)線程進(jìn)行階乘計(jì)算(1! +2! +3! +.100 !),每次計(jì)算時(shí)間隨機(jī)間隔1-10毫秒;另個(gè)線程每隔10毫秒時(shí)間讀取并線程上個(gè)線程的運(yùn)算結(jié)果和計(jì)算階乘, 比如 1! +2! =3package 線程;class MyThreadTest1 impl
9、ements Runnabledouble sum = 0;int i;public void run() double a = 1;for (int i = 1; i = 100; i+) a *= i;sum += a;int b = (int)(Math.random()*10);try Thread.sleep(b); catch (InterruptedException e) / TODO自動(dòng)生成的catch 塊 e.printStackTrace();System. out .println(sum);public class Test2 public static void m
10、ain(String args) MyThreadTest1 my = new MyThreadTest1();new Thread(my).start();while(my.i=100) try Thread.sleep(10); catch (InterruptedException e) / TODO自動(dòng)生成的catch 塊 e.printStackTrace();System. out .println(my.sum);3編寫(xiě)2個(gè)線程,第一個(gè)線程,打印字母A-Z,第二個(gè)線程打印數(shù)字 0-9,要求先打印完數(shù)字 才能打印字母。package 線程;class Threadl extends
11、 Threadpublic void run() for(int i = 0;i 10;i+) System. out .println(i);class Thread2 extends Threadpublic void run() char zi = A;for(int i = 0;i 0) /隨機(jī)獲取數(shù)組下標(biāo)int index = (int)(Math.random()*arr.length);/獲取得到的數(shù)字int get = arrindex;/代表這張獎(jiǎng)票已經(jīng)抽過(guò)if(flagindex!= true) flagindex = true;System. out .println(T
12、hread.currentThread().getName()+ 又產(chǎn)生了一個(gè)+get+元大獎(jiǎng)!);count-;5模擬多個(gè)人通過(guò)一個(gè)山洞。這個(gè)山洞每次只能通過(guò)一個(gè)人,每個(gè)人過(guò)山洞的時(shí)間為5秒,隨機(jī)生成10個(gè)人,同時(shí)準(zhǔn)備過(guò)山洞,要求顯示每個(gè)人過(guò)山洞的過(guò)程,(姓名,準(zhǔn)備進(jìn)入, 在洞中,出來(lái)了)具體參考運(yùn)行結(jié)果。下圖是某次部分的運(yùn)行結(jié)果,供參考訥窖1號(hào)*名進(jìn)入山洞游海1號(hào)正在通過(guò)山洞n .游客1弓已經(jīng)通過(guò)山洞游霽】0號(hào)準(zhǔn)前進(jìn)入由洞淅客10號(hào)正在通過(guò)山洞.。游客】。號(hào)已”通過(guò)山洞鼾客9號(hào)潴雷進(jìn)入山洞簫客g號(hào)正在通過(guò)山洞.,.洲客9號(hào)己經(jīng)通過(guò)山洞浙客X號(hào)琳將進(jìn)入山洞游客X號(hào)正在通過(guò)山洞”* *游務(wù)a號(hào)
13、已經(jīng)通過(guò)山洞游客?弓池筒進(jìn)入山洞游客7L;正在通過(guò)山洞. :package 線程;public class Test5 public static void main(String args) dong d = new dong();游客1號(hào))游客2號(hào))游客3號(hào))游客4號(hào))游客5號(hào))游客6號(hào))游客7號(hào))游客8號(hào))游客9號(hào))游客10號(hào))Thread thread1 = new Thread(d,Thread thread2 = new Thread(d,Thread thread3 = new Thread(d,Thread thread4 = new Thread(d, Thread thre
14、ad5 = new Thread(d, Thread thread6 = new Thread(d, Thread thread7 = new Thread(d, Thread thread8 = new Thread(d, Thread thread9 = new Thread(d, Thread thread10 = new Thread(d, thread1.start();thread2.start();thread3.start();thread4.start();thread5.start();thread6.start();thread7.start();thread8.star
15、t();thread9.start();thread10.start(); class dong extends Threadpublic void run() synchronized (this) System. out .println(Thread.currentThread().getName()+準(zhǔn)備進(jìn)入山洞);System. out .println(Thread.currentThread().getName()+ 正在通過(guò)山洞。);try Thread.sleep(5000); catch (InterruptedException e) / TODO自動(dòng)生成的catch 塊
16、 e.printStackTrace();System. out .println(Thread.currentThread().getName()+已經(jīng)通過(guò)山洞);System. out .println();6有10個(gè)窗口(W1, W2, W3W10 ,同時(shí)對(duì)外開(kāi)放售票, 一共有票50張(T1,T2T50) 需要按順序售出。要求:輸出每一張票的售出時(shí)間和售出窗口,不能出現(xiàn)票未售出或者被售出多次的情況。package 線程;public class Test6 public static void main(String args) window w = newwindow(); TOC o
17、 1-5 h z Thread t1 = newThread(w,窗口1);Thread t2 = newThread(w,窗口2);Thread t3 = newThread(w,窗口3);Thread t4= new Thread(w,窗 口4);Thread t5= new Thread(w,窗口5);Thread t6= new Thread(w,窗口6);Thread t7= new Thread(w,窗口7);Thread t8= new Thread(w,窗口8);Thread t9= new Thread(w,窗口9);Thread t10 = new Thread(w, 窗口
18、 10);t1.start();t2.start();t3.start();t4.start();t5.start();t6.start();t7.start();t8.start();t9.start();t10.start();class window implements Runnableint ticket = 50;public void run() while(true) Show(); try Thread.sleep(100); catch (InterruptedException e) / TODO自動(dòng)生成的catch 塊 e.printStackTrace();publi
19、c synchronized void Show() if(ticket0) System. out .println(Thread.currentThread().getName()+ 售票,票號(hào)為:+ticket-);7編寫(xiě)多線程程序,模擬多個(gè)人通過(guò)一個(gè)山洞。這個(gè)山洞每次只能通過(guò)一個(gè)人,每個(gè)人通過(guò) 山洞的時(shí)間為5秒,隨機(jī)生成10個(gè)人,同時(shí)準(zhǔn)備過(guò)此山洞,顯示過(guò)山洞人的名字。package 線程;class Cave implements RunnableObject lock=new Object。;/定義任意一個(gè)對(duì)象,用作同步代碼塊的鎖Ipublic void run()synchroni
20、zed(lock) 定義同步代碼塊System. out .println(Thread.currentThread().getName()+”通過(guò)山洞);tryThread.sleep(2000);catch(InterruptedException e)e.printStackTrace();public class Test7 public static void main(String口 args) Cave cave =new Cave();/創(chuàng)建對(duì)象for(int i=0;i10;i+)new Thread(cave,” 劉+(int)(Math.random()*100).sta
21、rt();8模擬生產(chǎn)、入庫(kù)、銷(xiāo)售假設(shè)某企業(yè)自產(chǎn)、自存、自銷(xiāo),需要將工廠生產(chǎn)的各類(lèi)產(chǎn)品不定時(shí)的運(yùn)到倉(cāng)庫(kù),與此同時(shí), 需要將倉(cāng)庫(kù)中的貨物運(yùn)往超市和商場(chǎng)中進(jìn)行銷(xiāo)售,請(qǐng)編寫(xiě)一個(gè)程序模擬此過(guò)程(主要是存取這個(gè)過(guò)程)。提示:倉(cāng)庫(kù)的存量是固定的,可以假設(shè)為一個(gè)常量,比如10。倉(cāng)庫(kù)滿的時(shí)候,不能再向倉(cāng)庫(kù)中存貨。倉(cāng)庫(kù)空的時(shí)候,不能賣(mài)出貨物。存貨和取貨是同時(shí)進(jìn)行的,不要出現(xiàn)先存滿再取完貨再存滿再取完的效果或者存一個(gè)取一個(gè)再存再取這樣的效果。思路清晰,輸出工整,編碼規(guī)范,有正確的異常處理。9桌上有一空盤(pán),最多允許存放一只水果。爸爸可向盤(pán)中放一個(gè)蘋(píng)果,媽媽可向盤(pán)中放一個(gè) 桔子,兒子專等吃盤(pán)中的桔子,女兒專等吃蘋(píng)果。下圖是某次部分的運(yùn)行結(jié)果,供參考I nl T |一晦 Amrita I卡 11Hl P, I f.4l l-|.低沌液人怙f盤(pán)謫八 世世丈成隨f r-真馳i次 他懵,如螞成干果
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年專家顧問(wèn)聘用合同范文
- 2025年中醫(yī)藥大數(shù)據(jù)項(xiàng)目提案報(bào)告模板
- 2025年懷化市住宅租賃合同示范
- 2025年植樹(shù)用地租賃合同模板
- 2025年電熱設(shè)備:電熱管項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告范文
- 2025年產(chǎn)權(quán)交易所項(xiàng)目轉(zhuǎn)讓服務(wù)協(xié)議
- 2025年中等教育助學(xué)貸款合同范本
- 2025年衛(wèi)生用品采購(gòu)合同
- 2025年天然級(jí)復(fù)盆子酮項(xiàng)目申請(qǐng)報(bào)告模稿
- 2025年企業(yè)信息技術(shù)保密協(xié)議管理
- 2025年上半年中煤科工集團(tuán)北京華宇工程限公司中層干部公開(kāi)招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 會(huì)議室墻面隔音板施工方案
- 特朗普就職演說(shuō)全文與核心要點(diǎn)
- 北京市海淀區(qū)2024-2025學(xué)年五年級(jí)上冊(cè)語(yǔ)文期末試卷(有答案)
- 2024-2024年高考全國(guó)卷英語(yǔ)語(yǔ)法填空
- 辛棄疾生平簡(jiǎn)介(課堂PPT)
- 人教版七年級(jí)英語(yǔ)下冊(cè)全冊(cè)英語(yǔ)單詞默寫(xiě)直接打印
- 公共衛(wèi)生服務(wù)考核評(píng)分標(biāo)準(zhǔn)(新)
- 《乒乓球》體育課教案(全)
- 阻變隨機(jī)存儲(chǔ)器(RRAM)綜述(自己整理)
- 提高住房公積服務(wù)質(zhì)量打造住房公積金服務(wù)品牌
評(píng)論
0/150
提交評(píng)論