java多執行緒 wait() notify()簡單使用
注:wait()和notify()應當用在synchronized內 package com.test; import java.util.ArrayList; public class ThreadWaitTeste { public static void main(String[] args) { ArrayList<String> ar = new ArrayList<String>(); Product p = new Product(ar); Consumer c = new Consumer(ar); Thread t1 = new Thread(p); Thread t2 = new Thread(c); t1.start(); t2.start(); } } class Product implements Runnable{ ArrayList<String> array; public Product(ArrayList<String> array){ this.array= array; } public void run() { while (true){ synchronized(array){ if(this.array.size()<5){ this.array.add("test!"); this.array.add("test!"); this.array.add("test!"); this.array.add("test!"); System.out.println("Product size : "+array.size()); }else{ System.out.println("Product wait size : "+array.size()+"數量少於5,等待......"); try { array.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } } class Consumer implements Runnable{ ArrayList<String> array; public Consumer(ArrayList<String> array){ this.array= array; } public void run() { while(true){ synchronized(array){ if(this.array.size()>=5){ this.array.remove(1); System.out.println("Consumer size : "+array.size()); }else{ try { array.notifyAll(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31506529/viewspace-2200136/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java多執行緒wait notify joinJava執行緒AI
- Java多執行緒 -- wait() 和 notify() 使用入門Java執行緒AI
- Java多執行緒8:wait()和notify()/notifyAll()Java執行緒AI
- Java多執行緒的wait()和notify()例子Java執行緒AI
- Java多執行緒/併發11、執行緒同步通訊:notify、waitJava執行緒AI
- Java多執行緒中wait 和 notify 方法理解Java執行緒AI
- Java多執行緒中的wait/notify通訊模式Java執行緒AI模式
- 多執行緒中的wait與notify執行緒AI
- 【Java】【多執行緒】兩個執行緒間的通訊、wait、notify、notifyAllJava執行緒AI
- java多執行緒基礎篇(wait、notify、join、sleep、yeild方法)Java執行緒AI
- Java多執行緒學習(四)等待/通知(wait/notify)機制Java執行緒AI
- 深入執行緒的wait()/notify()執行緒AI
- 多執行緒(一)、基礎概念及notify()和wait()的使用執行緒AI
- 執行緒間協作——wait、notify、notifyAll執行緒AI
- 執行緒篇2:[- sleep、wait、notify、join、yield -]執行緒AI
- Java多執行緒就是這麼簡單Java執行緒
- 【Java】【多執行緒】執行緒池簡述Java執行緒
- Java簡單多執行緒斷點下載Java執行緒斷點
- 執行緒安全(三個條件)Synchronzied,wait和notify執行緒AI
- java使用多執行緒Java執行緒
- Java多執行緒-執行緒池的使用Java執行緒
- 執行緒間的同步與通訊(2)——wait, notify, notifyAll執行緒AI
- java多執行緒之執行緒的基本使用Java執行緒
- Java多執行緒——執行緒Java執行緒
- Golang多執行緒簡單鬥地主Golang執行緒
- wxWidgets簡單的多執行緒執行緒
- 多執行緒 -- 初學簡單例子執行緒單例
- Java多執行緒—執行緒同步(單訊號量互斥)Java執行緒
- Java 併發程式設計:執行緒間的協作(wait/notify/sleep/yield/join)Java程式設計執行緒AI
- Java多執行緒-執行緒中止Java執行緒
- Java多執行緒——執行緒池Java執行緒
- JAVA_多執行緒_單例模式Java執行緒單例模式
- 多執行緒Demo學習(執行緒的同步,簡單的執行緒通訊)執行緒
- linux程式多執行緒互斥鎖的簡單使用Linux執行緒
- Java多執行緒的使用(二)Java執行緒
- java中關於執行緒間協作所用關鍵字synchronized,wait,notify的用法Java執行緒synchronizedAI
- 【Java多執行緒】輕鬆搞定Java多執行緒(二)Java執行緒
- 執行緒和執行緒池的理解與java簡單例子執行緒Java單例