Java同步機制:synchronized,wait,notify
/**
* 假設A,B兩個執行緒同時執行。但A需要某項前置條件必須滿足(data陣列裝滿)後才可以正常運轉。 這裡讓B執行緒去為滿足A的條件去幹活。
*/
public class SYN {
int[] data = new int[100];
final Object lock = new Object();
public SYN() {
new Thread(new A()).start();
new Thread(new B()).start();
}
private class A implements Runnable {
public void run() {
/**
* 因為A需要前置條件(data資料裝滿)必須得到滿足才能執行,所以,在A需要的data陣列不滿時,先讓A等待(實際上是等待B。
* A在等待的同時;B在幹活,B裝載data陣列)
*/
synchronized (lock) {
try {
System.out.println("A開始等待...");
lock.wait();
System.out.println("A結束等待!");
System.out.println("A前置條件滿足,開始做想做的事...");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
private class B implements Runnable {
public void run() {
synchronized (lock) {
System.out.println("B開始操作...");
/**
* 這裡假設B執行緒對陣列data的資料裝載需要費時的操作(如從網路下載)。B先於A,把A需要的資料data裝載完畢,然後通知A
*/
for (int i = 0; i < 100; i++) {
data[i] = i;
try {
Thread.sleep(10);
} catch (Exception e) {
}
}
System.out.println("B結束操作!");
lock.notify();
/** 通知A */
}
}
}
public static void main(String[] args) {
new SYN();
}
}
相關文章
- Java 中的 Wait 和 Notify 機制JavaAI
- java併發程式設計系列:wait/notify機制Java程式設計AI
- Java多執行緒學習(四)等待/通知(wait/notify)機制Java執行緒AI
- Java 非同步程式設計之:notify 和 wait 用法Java非同步程式設計AI
- wait() and notify()AI
- java多執行緒wait notify joinJava執行緒AI
- Java-併發-wait()、notify()和notifyAll()JavaAI
- java中關於執行緒間協作所用關鍵字synchronized,wait,notify的用法Java執行緒synchronizedAI
- java 同步鎖(synchronized)Javasynchronized
- Java多執行緒/併發11、執行緒同步通訊:notify、waitJava執行緒AI
- wait()和notify()、notifyAll()AI
- sleep & wait | notify | notifyAllAI
- Java的wait(), notify()和notifyAll()使用心得JavaAI
- Java常用的三個方法 `wait ` `notify` `notifyAll`JavaAI
- java多執行緒 wait() notify()簡單使用Java執行緒AI
- Java併發(二十一)----wait notify介紹JavaAI
- Java多執行緒8:wait()和notify()/notifyAll()Java執行緒AI
- 如何在 Java 中正確使用 wait, notify 和 notifyAllJavaAI
- Java多執行緒的wait()和notify()例子Java執行緒AI
- Java 同步機制淺談Java
- wait/notify/notifyAll 總結AI
- 執行緒間的同步與通訊(2)——wait, notify, notifyAll執行緒AI
- Java多執行緒4:synchronized鎖機制Java執行緒synchronized
- Java多執行緒 -- wait() 和 notify() 使用入門Java執行緒AI
- Java多執行緒中wait 和 notify 方法理解Java執行緒AI
- Java多執行緒中的wait/notify通訊模式Java執行緒AI模式
- java synchronize - 執行緒同步機制Java執行緒
- wait、notify和notifyAll的關係AI
- 深入執行緒的wait()/notify()執行緒AI
- java基礎知識回顧之java Thread類學習(七)--java多執行緒通訊等待喚醒機制(wait和notify,notifyAll)...Javathread執行緒AI
- Java併發(二十二)----wait notify的正確姿勢JavaAI
- Java同步塊(synchronized block)使用詳解JavasynchronizedBloC
- 一個理解wait()與notify()的例子AI
- java併發程式設計之wait¬ify VS lock&amJava程式設計AI
- java多執行緒基礎篇(wait、notify、join、sleep、yeild方法)Java執行緒AI
- Synchronized同步鎖synchronized
- 深入淺出: Java回撥機制(非同步)Java非同步
- Java 非同步回撥機制例項解析Java非同步