Java多執行緒wait,notify例項

2021-09-01 20:18:35 字數 1242 閱讀 4974

package com.lj.thread2;

public class sample

catch (interruptedexception e)

}number++;

system.out.println("number increased by "+thread.currentthread().getname()+", number= "+ number);;

notify();

}public synchronized void decrease()

catch (interruptedexception e)

}number--;

system.out.println("number decreased by "+thread.currentthread().getname()+", number= "+ number);;

notify();}}

這裡定義了物件類, 實現數字在1和0之間進行不停的轉換。

package com.lj.thread2;

public class increasethread extends thread

@override

public void run()

catch (interruptedexception e)

sample.increase();}}

}

對數字加1的執行緒.

package com.lj.thread2;

public class decreasethread extends thread

@override

public void run()

catch (interruptedexception e)

sample.decrease();}}

}

減1的執行緒

package com.lj.thread2;

public class test

}

這裡的重點就是while迴圈那裡不能寫if。因為乙個執行緒如果處於wait階段,當它wait結束的時候, 要執行的時候必須再驗證一下condition是否符合。

使用if的話不會去進行驗證, 會直接執行number++或者number--, 導致錯誤。

java多執行緒

在網上看到很有意思的問題,摘下來好好看下 在面試的時候被問了乙個多執行緒的問題 回來仔細思考了一下,多執行緒是否真的能提高了效率?我對多執行緒的理解就是 比如挖乙個隧道,有2種開工方法 1 只在山的一頭挖,直至挖到山的另一頭,從而打通隧道,這可以看成是單執行緒 2 在山的兩頭挖,同時開工,最後在山的...

Java 多執行緒

1。thread類和runnable介面 2。主線程 用thread的static thread currentthread 方法獲得 3。通過實現runnable介面建立執行緒 實現runnable介面的run方法。新執行緒在run 方法返回時結束。注意用這種方法建立程序時,在實現runnable...

JAVA 多執行緒

為hashmap的不正確使用所導致。hashmap在多執行緒環境下使用不安全。使用靜態hashmap作為聯絡人資料快取,key為手機號碼.private static maplxrdata new hashmap 多執行緒環境下不同步hashmap可能導致如下問題 1 多執行緒put操作後可能導致g...