一个简单的生产者和消费者的之间的产品流通示例,利用java多线程编程,产生生产者和消费者两个子线程访问同步方法。演示了wait()和notify()方法的基本含义 ^_^ 代码如下:
JAVA多线程编程:wait() 和 notify() 方法示例
下载:
Counter.java
- class Counter {
- int n;
- boolean valueSet = false ;
- synchronized int get() {
- if (!valueSet)
- try{
- wait();
- }catch(InterruptedException e){
- System.out.println("InterruptedExcepitons Caught in Get Methord");
- }
- System.out.println("Got: "+n);
- valueSet = false ;
- notify();
- return n;
- }
- synchronized void put(int n){
- if(valueSet)
- try{
- wait();
- }catch(InterruptedException e){
- System.out.println("InterruptedException Caught in Put Methord");
- }
- this.n = n;
- valueSet = true ;
- System.out.println("Put: "+n);
- notify();
- }
- }
- class Producer implements Runnable {
- Counter counter;
- Producer(Counter counter){
- this.counter = counter ;
- new Thread (this,"Producer").start();
- }
- public void run(){
- int i = 0;
- while(true){
- counter.put(i++);
- }
- }
- }
- class Customer implements Runnable{
- Counter counter ;
- public Customer(Counter counter){
- this.counter = counter ;
- new Thread(this,"Customer").start();
- //this.Thread.sleep(10000);
- }
- public void run (){
- while(true){
- counter.get();
- }
- }
- }
- public class ProducerAndCustomer {
- public static void main(String [] args){
- Counter counter = new Counter();
- new Producer(counter);
- new Customer(counter);
- System.out.println("haha");
- }
- }