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多线程之线程间协作 notify与wait的使用

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

Java用wait和notify实现线程协作

编写一个应用程序,除了主线程外,还有两个子线程。两个子线程对同一个数据操作,其中一个线程负责对该数据做递增操作,一个线程负责对该线程做递减操作。当这个数据小于0的话,递减操作等待,当这个数据大于100...
  • u012706758
  • u012706758
  • 2015年11月20日 16:25
  • 577

java并发编程—— 六 进程协作:阻塞队列\wait() notify()\ Condition

进程协作的三种常用方式wait()&¬ifyAll()要点: wait()中释放该对象的对象锁 notify() notifyAll() wait() 均是Object方法 noti...
  • lemon89
  • lemon89
  • 2016年03月24日 23:47
  • 1960

wait和notify来设计阻塞式队列的流程

使用wait和notify来设计一个阻塞式的BlockingQuese队列 设计一个集合LinkedList 设计一个计数器,使用AtomicInterge类来做 创建几个用来表示集合的常量,如最大值...
  • xiaotudouhaidao
  • xiaotudouhaidao
  • 2017年03月06日 19:13
  • 270

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

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

Java多线程之~~~~使用wait和notify实现生产者消费者模型

在多线程开发中,最经典的一个模型就是生产者消费者模型,他们有一个缓冲区,缓冲区有最大限制,当缓冲区满 的时候,生产者是不能将产品放入到缓冲区里面的,当然,当缓冲区是空的时候,消费者也不能从中拿出来产...
  • a352193394
  • a352193394
  • 2014年09月18日 23:28
  • 7289

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

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

java wait()/notify() 实现生产者消费者模式

java中的多线程会涉及到线程间通信,常见的线程通信方式,例如共享变量、管道流等,这里我们要实现生产者消费者模式,也需要涉及到线程通信,不过这里我们用到了java中的wait()、notify()方法...
  • u014039577
  • u014039577
  • 2016年08月18日 17:54
  • 2200

java wait和notify 简单理解

/**  * @author yangwl  *   * wait  noify  noifyall  * 注意 : 因为涉及到对象锁,他们必须都放在synchronized中来使用.  *...
  • cnm_1314
  • cnm_1314
  • 2016年09月13日 17:01
  • 635

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

一. java Thread类的几个函数的说明:  1.  setPriority( ): 设置线程的优先权;     2 . yield( ): 暂停线程的执行,给其它具有相同优先权的线程执行的...
  • liranke
  • liranke
  • 2013年10月01日 18:24
  • 36497
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java用wait和notify实现线程协作
举报原因:
原因补充:

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