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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java线程实例题_java线程相关试题实例源码代码

發布時間:2024/9/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java线程实例题_java线程相关试题实例源码代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java線程相關試題實例源碼代碼。

/**

* 計算輸出其他線程鎖計算的數據

*/

class ThreadA {

public static void main(String[] args) {

ThreadB b = new ThreadB();

//啟動計算線程

b.start();

//線程A擁有b對象上的鎖。線程為了調用wait()或notify()方法,該線程必須是那個對象鎖的擁有者

synchronized (b) {

try {

System.out.println(“等待對象b完成計算。。。”);

//當前線程A等待

b.wait(); //這里并不是讓b去wait,是b的所有者線程wait,但是這個線程的蘇醒的條件是b的notify或notifyAll方法的調用而且

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(“b對象計算的總和是:” + b.total);

}

}

}

/**

* 計算1+2+3 … +100的和

*

* @author leizhimin 2008-9-15 13:20:49

*/

class ThreadB extends Thread {

int total;

public void run() {

System.out.println(“xxxxxxxxxxxxxxxxxrrrrrrrrrrrrrrrrrrrrrx”);

synchronized (this) {

System.out.println(“xxxxxxxxxxxxxxxxxx”);

for (int i = 0; i < 101; i++) {

total += i;

}

//(完成計算了)喚醒在此對象監視器上等待的單個線程,在本例中線程A被喚醒

notify();

}

}

}

notify():

(喚醒)

(在此對象監視器上)

(等待的)

(單個)

(線程)。

A a = new A();

a.notify();

a是對象監視器

notify()是類A的成員方法

因此wait、notify、notifyAll都屬于同一個對象監視器

解決死等問題的途徑:

通過某一條件來判斷對象監視器是否以及執行了notifyAll()

1)如果已執行,則避免自己被監視器wait()

2)如果沒執行,則可以放心大膽的去被wait(),因為遲早都會被notifyAll()

總結

以上是生活随笔為你收集整理的java线程实例题_java线程相关试题实例源码代码的全部內容,希望文章能夠幫你解決所遇到的問題。

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