Java用wait和notify实现线程协作

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

编写一个应用程序,除了主线程外,还有两个子线程。两个子线程对同一个数据操作,其中一个线程负责对该数据做递增操作,一个线程负责对该线程做递减操作。当这个数据小于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/notifyAll实现线程间通信的几点重要说明

在Java中,可以通过配合调用Object对象的wait()方法和notify()方法或notifyAll()方法来实现线程间的通信。在线程中调用wait()方法,将阻塞等待其他线程的通知(其他线程调...
  • mmc_maodun
  • mmc_maodun
  • 2013年12月09日 22:09
  • 19426

java线程的wait方法和notify方法的运用

一. java Thread类的几个函数的说明:  1.  setPriority( ): 设置线程的优先权;     2 . yield( ): 暂停线程的执行,给其它具有相同优先权的线程执行的...
  • liranke
  • liranke
  • 2013年10月01日 18:24
  • 36364

JAVA线程同步中wait()和notify()简洁例子

搞懂这两个的用法之前,请你务必搞懂线程同步的道理,否则,下面这一大篇你应该是看不懂的。 wait()和notify()一系列的方法,是属于对象的,不是属于线程的。它们用在线程同步时,synchron...
  • superit401
  • superit401
  • 2016年08月19日 20:40
  • 3434

java线程同步原理、wait,notify的用法及与sleep的区别

一。 java线程同步原理 java会为每个object对象分配一个monitor,当某个对象的同步方法(synchronized methods )或同步快被多个线程调用时,该对象的monit...
  • fupacker
  • fupacker
  • 2013年09月24日 20:19
  • 6611

Java线程(初级)——synchronized、死锁、wait、notify详解

线程可以在任意对象的监视器(锁)上阻塞(wait,前提是获取到该对象的锁),也可以在唤醒任意一个wait在某个对象的监视器上的线程(notify,前提是获取到该对象的锁)。“获取到某个对象的锁”,就像...
  • MyTroy
  • MyTroy
  • 2014年08月03日 20:01
  • 2588

Java 多线程之线程间的通信——wait及notify方法

线程间的相互作用   线程间的相互作用:线程之间需要一些协调通信,来共同完成一件任务。   Object类中相关的方法有两个notify方法和三个wait方法:   http://d...
  • free4294
  • free4294
  • 2014年09月11日 14:37
  • 3851

Java多线程之线程间协作 notify与wait的使用

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景        Java多线程操作运用很广,特别是在android程序方面。线程异步协作是多线程...
  • gshengod
  • gshengod
  • 2014年02月13日 09:01
  • 2372

【线程同步】java实现生产者消费者问题与线程中的wait与notify总结

JAVA解决线程模型有三种方式,只讲一种:   1、wait()和notify()
  • robert_lizhiqiang
  • robert_lizhiqiang
  • 2014年09月15日 14:41
  • 1114

java多线程-使用notify和wait完成多线程的顺序执行

总结一个关于多线程顺序执行的万能方法。 之前也参考了http://blog.csdn.net/zyplus的博客,觉得写得挺好,但是运行时或多或少又存在着一些小小的问题,算作为对于之前作者文章的一个补...
  • u013376508
  • u013376508
  • 2016年03月16日 10:33
  • 1919

深入理解Java多线程中的wait(),notify()和sleep()

大家在学习Java的过程中,势必要进行多线程的系统学习,这部分内容知识对于你在工作中的影响是极大的,并且在面试的过程中,这部分知识也是必然会被问到的。既然多线程的知识如此重要,那么我们就不能浅尝辄止。...
  • Kaka534
  • Kaka534
  • 2016年07月07日 10:41
  • 12025
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java用wait和notify实现线程协作
举报原因:
原因补充:

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