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() 使用入門Java執行緒AI
- Java多執行緒中wait 和 notify 方法理解Java執行緒AI
- Java多執行緒中的wait/notify通訊模式Java執行緒AI模式
- 【Java】【多執行緒】兩個執行緒間的通訊、wait、notify、notifyAllJava執行緒AI
- java多執行緒基礎篇(wait、notify、join、sleep、yeild方法)Java執行緒AI
- Java多執行緒學習(四)等待/通知(wait/notify)機制Java執行緒AI
- 多執行緒(一)、基礎概念及notify()和wait()的使用執行緒AI
- 執行緒篇2:[- sleep、wait、notify、join、yield -]執行緒AI
- 執行緒安全(三個條件)Synchronzied,wait和notify執行緒AI
- Java多執行緒就是這麼簡單Java執行緒
- 【Java】【多執行緒】執行緒池簡述Java執行緒
- 執行緒間的同步與通訊(2)——wait, notify, notifyAll執行緒AI
- java使用多執行緒Java執行緒
- Java多執行緒-執行緒池的使用Java執行緒
- java多執行緒之執行緒的基本使用Java執行緒
- Java多執行緒—執行緒同步(單訊號量互斥)Java執行緒
- Golang多執行緒簡單鬥地主Golang執行緒
- Java多執行緒-執行緒中止Java執行緒
- 多執行緒Demo學習(執行緒的同步,簡單的執行緒通訊)執行緒
- Java多執行緒Thread類使用Java執行緒thread
- Java多執行緒的使用(二)Java執行緒
- 【Java多執行緒】輕鬆搞定Java多執行緒(二)Java執行緒
- 併發程式設計——執行緒中sleep(),yield(),join(),wait(),notify(),notifyAll()區別程式設計執行緒AI
- Python簡單實現多執行緒例子Python執行緒
- java——多執行緒Java執行緒
- java多執行緒Java執行緒
- Java - 多執行緒Java執行緒
- java 多執行緒Java執行緒
- Java多執行緒之執行緒中止Java執行緒
- Java多執行緒-執行緒狀態Java執行緒
- Java多執行緒-執行緒通訊Java執行緒
- java 多執行緒守護執行緒Java執行緒
- Java多執行緒(2)執行緒鎖Java執行緒
- java多執行緒9:執行緒池Java執行緒
- 【java多執行緒】(二)執行緒停止Java執行緒
- Java多執行緒學習(一)Java多執行緒入門Java執行緒
- python多執行緒、鎖、event事件機制的簡單使用Python執行緒事件
- java 多執行緒使用PipedOutStream和PipedInputStreamJava執行緒