黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java多線程實例練習題答案

Java多線程實例練習題答案

更新時間:2020-08-13 16:35:51 來源:動力節點 瀏覽2520次

問題描述

啟動3個線程打印遞增的數字,線程1先打印1,2,3,4,5,然后是線程2打印6,7,8,9,10,然后是線程3打印11,12,13,14,15.接著再由線程1打印16,17,18,19,20….以此類推,直到打印到75.程序的輸出結果應該為:

線程1:1

線程1:2

線程1:3

線程1:4

線程1:5

線程2:6

線程2:7

線程2:8

線程2:9

線程2:10

線程3:71

線程3:72

線程3:73

線程3:74

線程3:75

解法一:

class?PrintRunnable?implements?Runnable?{

????private?static?volatile?int?printNum?=?0;
????private?int?threadId;
????private?Object?o;
????public?PrintRunnable(int?threadId,Object?o){
????????this.threadId?=?threadId;
????????this.o=o;
????}
????@Override
????public?void?run()?{
????????while(printNum?<?75){
????????????synchronized?(o){
????????????????if?(printNum/5%3?+?1?==?threadId){
????????????????//該判斷確保對應線程輸出
????????????????????for?(int?i?=?0;?i?<5;?i++)?{
????????????????????????System.out.println("線程"+threadId+":"+(++printNum));
????????????????????}
????????????????????o.notifyAll();
????????????????}else?{
????????????????????try?{
????????????????????????o.wait();
????????????????????}?catch?(InterruptedException?e)?{
????????????????????????e.printStackTrace();
????????????????????}
????????????????}

????????????}
????????}
????}
}
public?class?Main?{
????public?static?void?main(String[]?args)?throws?InterruptedException?{
????????Object?o?=?new?Object();
????????new?Thread(new?PrintRunnable(1,o)).start();
????????new?Thread(new?PrintRunnable(2,o)).start();
????????new?Thread(new?PrintRunnable(3,o)).start();
????}
}

解法二:

public?class?Print123456?implements?Runnable{
????private?String?name;
????private?Object?prev;
????private?Object?self;
????private?int?count;
????public?Print123456(String?name,Object?prev,Object?self,int?count){
????????this.name=name;
????????this.prev=prev;
????????this.self=self;
????????this.count=count;
????}
????@Override
????public?void?run()?{
????????while(count<=75){
????????????synchronized?(prev){
????????????????synchronized?(self){
????????????????????for?(int?i=0;i<5;i++){
????????????????????????count=count+1;
????????????????????????if(count>75)break;
????????????????????????System.out.println(name+":?"+count);

????????????????????}
????????????????????count=count+10;
????????????????????//System.out.println("釋放自身鎖,并喚醒在等待該鎖的線程");
????????????????????self.notify();//釋放自身鎖,并喚醒在等待該鎖的線程

????????????????}
????????????????//System.out.println("釋放自身鎖成功");
????????????????try?{
????????????????????//System.out.println("等待前一個鎖");
????????????????????prev.wait();//等待前一個鎖

????????????????}?catch?(InterruptedException?e)?{
????????????????????e.printStackTrace();
????????????????}
????????????}
????????????//System.out.println("兩個鎖全部釋放,重新進入新的循環,但是由于有prev.wait()所以該線程等待獲取prev的鎖");
????????}
????}
}
public?class?Main?{
????public?static?void?main(String[]?args)?throws?InterruptedException?{
????????Object?a=new?Object();
????????Object?b=new?Object();
????????Object?c=new?Object();
????????Print123456?A=new?Print123456("線程1",c,a,0);
????????Print123456?B=new?Print123456("線程2",a,b,5);
????????Print123456?C=new?Print123456("線程3",b,c,10);
????????new?Thread(A).start();
????????Thread.sleep(100);
????????new?Thread(B).start();
????????Thread.sleep(100);
????????new?Thread(C).start();
????????Thread.sleep(100);
????}
}

以上就是動力節點java培訓機構的小編針對“Java多線程實例練習題答案”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲成人黄色网 | 亚洲 欧美 成人日韩 | 日韩a级毛片免费视频 | 2021天天躁夜夜燥西西 | xxxxxx日本处大片免费看 | 欧美黄色一级视频 | free欧美性杂交hd | 蜜桃欧美性大片 | 1204手机在线观看免费高清 | 一本视频在线 | 美女很黄很黄免费 | 性色生活片免费放 | 免费在线国产视频 | 青青青国产精品手机在线观看 | 亚洲经典一区二区三区 | 精品一区二区三区高清免费观看 | 免费观看一级欧美大 | 麻豆精品成人免费国产片 | 国产成人高清亚洲一区久久 | 天天爽夜夜爽 | 国产在线日韩 | 欧美成人免费全部观看在线看 | 成人福利网站 | 男女免费爽爽爽在线视频 | 性欧美高清videofree | 天天视频色版 | 欧美青青| 激情五月开心婷婷 | 免费的一级片 | 黄色一级片免费观看 | 一区二区三区日本 | 亚洲不卡免费视频 | 国产一级淫片免费播放 | 特一级黄色 | 理伦片免费理论片 | 涩涩涩视频在线观看免费 | 夜夜操天天摸 | 法国18sexxxx性xxx | 青青青国产依人在线视频97 | 国产成人精品免费久久久久 | 视频一区二区三区在线观看 |