日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多线程题目 2019.06.02 晚

發布時間:2025/4/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多线程题目 2019.06.02 晚 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用Thread類創建兩個模擬貓和狗的線程,貓和狗共享房屋中的一桶水,即房屋是線程的目標對象,房屋中的一桶水被貓和狗共享。貓和狗輪流喝水(狗喝的多,貓喝的少),當水被喝盡時,貓和狗進入死亡狀態。貓或狗在輪流喝水的過程中,主動休息片刻(讓Thread類調用sleep(int n)進入中斷狀態),而不是等到被強制中斷喝水.
代碼實現:(測試類有點看不懂

?

多線程例題一

House類:

public class House implements Runnable {int waterAmount; //用int變量模擬水量public void setWater(int w) {waterAmount = w;}public void run() { while(true) {String name=Thread.currentThread().getName();if(name.equals("狗")) { System.out.println(name+"喝水") ; waterAmount=waterAmount-2; //狗喝的多 }else if(name.equals("貓")){System.out.println(name+"喝水") ; waterAmount=waterAmount-1; //貓喝的少 }System.out.println(" 剩 "+waterAmount);try{ Thread.sleep(2000); //間隔時間 }catch(InterruptedException e){} if(waterAmount<=0) {return; } }} }

Test類:

public class Test{public static void main(String args[ ]) {House house = new House();house.setWater(10);Thread dog,cat;dog=new Thread(house); cat=new Thread(house); //cat和dog的目標對象相同 dog.setName("狗");cat.setName("貓"); dog.start();cat.start();} }

?

多線程例題二

?

一個線程每隔1秒鐘在命令行窗口輸出本地機器的時間,在3秒鐘后,該線程又被分配了實體,新實體又開始運行。因為垃圾實體仍然在工作,因此,在命令行每秒鐘能看見兩行同樣的本地機器時間.

代碼實現:

?

Clock類:

import java.util.Date; import java.text.SimpleDateFormat; public class Clock implements Runnable{int time=0;SimpleDateFormat m=new SimpleDateFormat("hh:mm:ss");Date date;public void run() {while(true) {date=new Date();System.out.println(m.format(date));time++;try {Thread.sleep(2000);}catch(InterruptedException e) {}if(time==3) {Thread thread=Thread.currentThread();thread=new Thread(this);thread.start();}}}}

Test類:

public class Test{public static void main(String[] args) {Clock clock=new Clock();Thread homeTime=new Thread(clock);homeTime.start();} }

?

多線程例題三

?

有兩個線程:student和teacher,其中student準備睡一小時后再開始上課,teacher在輸出3句“上課”后,吵醒休眠的線程student。

運行效果如圖:

代碼實現:

ClassRoom類:

public class ClassRoom implements Runnable{Thread student,teacher;ClassRoom(){student=new Thread(this);teacher=new Thread(this);teacher.setName("王教授");student.setName("小張");}public void run() {if(Thread.currentThread()==student) {try {System.out.println(student.getName()+"正在睡覺");Thread.sleep(1000*60*60);}catch(InterruptedException e) {System.out.println(student.getName()+"被老師吵醒了");}System.out.println(student.getName()+"開始聽課");}else if(Thread.currentThread()==teacher) {for(int i=0;i<3;i++) {System.out.println("上課!");try {Thread.sleep(500);}catch(InterruptedException e) {}}student.interrupt(); //吵醒學生 }}}

?

Test類:

public class Test{public static void main(String[] args) {ClassRoom s=new ClassRoom();s.student.start();s.teacher.start();} }

轉載于:https://www.cnblogs.com/jianqiao123/p/10965039.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的多线程题目 2019.06.02 晚的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。