线程同步示例
来源:互联网 发布:sql没有商业智能项目 编辑:程序博客网 时间:2024/05/22 08:09
描述:父亲和儿子共享一个盘子,父亲放苹果,儿子吃苹果,盘子里面只能放一个,父亲放苹果的时候,儿子不能吃,儿子取的时候,父亲不能放,盘子只放一个苹果,完成两个线程的同步问题
注:synchronized修饰的非静态方法是对象锁,静态方法是类锁
//盘子class Dish{ int apple =0; public synchronized void add() throws Exception{ while(apple==1){ this.wait(); } if(apple==0){ System.out.println("putting"); apple=1; Thread.sleep(1000); } this.notify(); } public synchronized void reduce()throws Exception{ while(apple == 0){ this.wait(); } if(apple == 1){ System.out.println("eatting"); apple=0; this.notify(); } }}class Father extends Thread{ private Dish dish; public Father(Dish dish){ this.dish = dish; } public void run(){ while(true){ try { dish.add(); } catch (Exception e) { e.printStackTrace(); } } }}class Son extends Thread{ private Dish dish; public Son(Dish dish){ this.dish = dish; } public void run(){ while(true){ try { dish.reduce(); } catch (Exception e) { e.printStackTrace(); } } }}public class apple { public static void main(String[] args) { Dish dish = new Dish(); Father father = new Father(dish); Son son = new Son(dish); father.start(); son.start(); }}
阅读全文
0 0
- Java线程同步示例
- Java 线程同步示例
- java线程同步示例
- C# 线程同步示例
- Java线程同步示例
- 线程同步示例
- 线程同步的简单示例
- linux下线程的同步示例
- java线程同步最基本的示例
- 线程同步之CyclicBarrier使用示例
- windows C++ 互相等待线程同步示例
- 线程同步工具之CountDownLatch示例
- Java 2 入门经典(线程、线程同步示例代码)
- 线程同步基本概念+实现线程同步的2种方法(无代码示例)
- 多线程示例(二) 用事件使线程同步
- CreateMutex利用互斥对象实现线程同步示例01
- C++ 经典线程同步 事件Event示例解析(十)
- cocos2d-x 之 多线程及线程同步 --- 学生购票示例
- mysql-python安装出错
- @media-屏幕窗口变化时理解
- shell变量测试
- 51单片机定时器
- 插入排序的改进2:希尔排序
- 线程同步示例
- Springmvc通过注解解决日期转换问题
- Spring MVC使用FreeMarker调用java静态方法
- 机器学习在有限规则可选之下的可能性
- 堆操作(优先队列)
- 理解 SolrCloud
- java des 加解密 通用版
- 时间控制
- 实用插件(三)通讯录插件