Java用wait和notify实现线程协作

原创 2015年11月20日 16:25:17

编写一个应用程序,除了主线程外,还有两个子线程。两个子线程对同一个数据操作,其中一个线程负责对该数据做递增操作,一个线程负责对该线程做递减操作。当这个数据小于0的话,递减操作等待,当这个数据大于100的话,递增操作等待。

import java.lang.*;
public class Demo{
    private int a = 0;

    public synchronized void add(){
        ++a;

        if(a > 100){
            try{
                this.wait();

            }catch(Exception e){
                e.printStackTrace();
            }
        }else{
            System.out.println(Thread.currentThread().getName()+":"+a);
        }
        this.notify();
    }

    public synchronized void delete(){
        --a;
        if(a < 0){
            try{
                this.wait();

            }catch(Exception e){
                e.printStackTrace();
            }
        }else{
            System.out.println(Thread.currentThread().getName()+":"+a);
        }
        this.notify();
    }
    public static void main(String[] args) {
        Demo dm = new Demo();
        new Thread(){
            public void run(){
                while(true){
                    dm.add();
                }
            }
        }.start();

        new Thread(){
            public void run(){
                while(true){
                    dm.delete();
                }
            }
        }.start();
    }

}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java:使用wait()与notify()实现线程间协作

http://zhangjunhd.blog.51cto.com/113473/71387 使用wait()与notify()/notifyAll()可以使得多个任务之间彼此协作。    1...

Java 线程协作 wait,notify,notifyAll,Sleep,Join,Condition

在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界...

JAVA线程间协作:wait.notify.notifyAll

JAVA的进程同步是通过synchronized()来实现的,需要说明的是,JAVA的synchronized()方法类似于操作系统概念中的互斥内存块,在JAVA中的Object类型中,都是带有一个内...

Java并发——线程间协作(wait、notify、sleep、yield、join)

1线程的状态Java中线程中状态可分为五种:New(新建状态),Runnable(就绪状态),Running(运行状态),Blocked(阻塞状态),Dead(死亡状态)...

java并发编程(13)--线程间协作的两种方式:wait、notify、notifyAll和Condition

本文转载自:http://www.cnblogs.com/dolphin0520/p/3920385.html 尊重原创在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经...
  • Mrzhoug
  • Mrzhoug
  • 2016年05月04日 21:56
  • 277

Java并发编程:线程间协作的两种方式:wait、notify和Condition

在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界...

Java并发编程:线程间的协作wait()、notify()、notifyAll()和Condition

java并发编程协作有两种方式:1、利用Object对象下面的wait()、notify()或者notifyAll() 2、领用Condition的await()、singnal()或者singnal...

Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition

在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界...

Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition

在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界...

Java 线程间的协作(wait/notify/sleep/yield/join)

今天说说这个看了很多遍,又忘了很多遍的知识点:Java线程间的协作。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java用wait和notify实现线程协作
举报原因:
原因补充:

(最多只允许输入30个字)