博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程通信,生产者消费者问题(Java)
阅读量:4603 次
发布时间:2019-06-09

本文共 1544 字,大约阅读时间需要 5 分钟。

在java中,使用wait()和notify()方法实现线程之间的通信,当线程被阻塞无法继续进行时,可以调用wait()方法,他的作用是使线程进入休眠状态,所有的资源被释放,允许其他线程使用,当一个线程释放某种资源时,可以调用notify()方法,使某个进入休眠状态的线程被唤醒,继续执行。notifyAll()可以将所有的线程唤醒,继续执行。

public class ProCus {    /**     * @param args     */    public static void main(String[] args) {        Operation p=new Operation();        new Thread(new Producer(p)).start();        new Thread(new Consumer(p)).start();    }}class Operation{    String name="";    Boolean bfull=false;//对于bfull可以进行设置,来确定仓库的容量是否满了    public synchronized void put(String name){        this.name=name;        if(bfull)        try{            wait();            Thread.sleep(1000);        }catch(Exception e){}        System.out.println(name+"生产一个产品");        bfull=true;        notify();    }    public synchronized void get(){        if(!bfull)            try{                wait();            }catch(Exception e){}            System.out.println("顾客取走一个产品");            bfull=false;            notify();    }}//实现Runnable接口,run()方法是为程序中并发执行的线程建立的进入点class Producer implements Runnable{    Operation p;    public Producer(Operation p){        this.p=p;    }        public void run(){        int i=0;        while(true){            if(i==0)                p.put("Kellerman");            else p.put("Kim");            i=1-i;        }    }}class Consumer implements Runnable{    Operation p;    public Consumer(Operation p){        this.p=p;    }    public void run(){        while(true){            p.get();        }    }}

 

转载于:https://www.cnblogs.com/redlight/archive/2012/06/02/2531554.html

你可能感兴趣的文章
How to lisp Lisp output a paragraph"500 Tph Dry Process Cement Plant Machinery Manufacturers"
查看>>
OpenMobile's Application Compatibility Layer (ACL)
查看>>
竞价广告系统-广告检索
查看>>
强哥PHP面向对象学习笔记
查看>>
[转]基于.NET平台常用的框架整理
查看>>
Symbian (Read Inbox)读取收件箱的内容
查看>>
良好的编程规范
查看>>
struts2 入门
查看>>
.net 编译原理
查看>>
mean 快速开发和现有技术的对比分析
查看>>
Metro Style app :浏览器扩展
查看>>
linux的kernel是怎样工作的(TI_DM36X_ARM系统)(1)
查看>>
[luogu4310] 绝世好题 (递推)
查看>>
[luogu3203 HNOI2010] 弹飞绵羊 (分块)
查看>>
-Dmaven.multiModuleProjectDirectory system propery is not set.
查看>>
Python2 unichr() 函数
查看>>
Python 字典 copy()方法
查看>>
Minimum Path Sum
查看>>
Remove Duplicates from Sorted Array II
查看>>
常量指针和指针常量巧妙记忆方法[转]
查看>>