多线程-wait(针对OBJECT对象锁的方式)
2016-05-06 09:16
507 查看
对象锁,是 使用一个object 对象,将这个对象供多个线程共享使用,然后再线程中,对这个对象加锁。
直接看代码
结果
直接看代码
package com.luoy.Thread.wait; public class ObjectWait2{ public static void main(String[] args) throws InterruptedException{ Object b = new Object(); Object c = new Object(); new Thread(new BuyFood(b, c)).start(); Thread.sleep(1000); new Thread(new CookFood(b, c)).start(); } } class BuyFood implements Runnable{ private Object block; private Object clock; public BuyFood(Object block, Object clock){ this.block = block; this.clock = clock; } @Override public void run(){ for(int i = 0; i < 10; i++){ synchronized(clock){ //得到买的锁 synchronized(block){ p("买萝卜"+i); block.notify(); } try{ clock.wait(); }catch(InterruptedException e){ // TODO Auto-generated catch block e.printStackTrace(); } } try{ Thread.sleep(1000); }catch(InterruptedException e){ // TODO Auto-generated catch block e.printStackTrace(); } } } private void p(String s){ System.out.println(s); } } class CookFood implements Runnable{ private Object block; private Object clock; public CookFood(Object block, Object clock){ this.block = block; this.clock = clock; } @Override public void run(){ for(int i = 0; i < 10; i++){ synchronized(block){ //得到买的锁 synchronized(clock){ p("煮萝卜"+i); clock.notify(); } try{ block.wait(); }catch(InterruptedException e){ // TODO Auto-generated catch block e.printStackTrace(); } } } } private void p(String s){ System.out.println(s); } }
结果
买萝卜0 煮萝卜0 买萝卜1 煮萝卜1 买萝卜2 煮萝卜2 买萝卜3 煮萝卜3 买萝卜4 煮萝卜4 买萝卜5 煮萝卜5 买萝卜6 煮萝卜6 买萝卜7 煮萝卜7 买萝卜8 煮萝卜8 买萝卜9 煮萝卜9
相关文章推荐
- Python3写爬虫(四)多线程实现数据爬取
- C#实现多线程的同步方法实例分析
- 浅谈chuck-lua中的多线程
- C#简单多线程同步和优先权用法实例
- C#多线程学习之(四)使用线程池进行多线程的自动管理
- C#多线程编程中的锁系统(三)
- 解析C#多线程编程中异步多线程的实现及线程池的使用
- C#多线程学习之(六)互斥对象用法实例
- 基于一个应用程序多线程误用的分析详解
- C#多线程学习之(三)生产者和消费者用法分析
- C#多线程学习之(一)多线程的相关概念分析
- C#多线程之Thread中Thread.IsAlive属性用法分析
- 分享我在工作中遇到的多线程下导致RCW无法释放的问题
- C#多线程编程之使用ReaderWriterLock类实现多用户读与单用户写同步的方法
- C#控制台下测试多线程的方法
- 21天学习android开发教程之SurfaceView与多线程的混搭
- Ruby 多线程的潜力和弱点分析
- C#中WPF使用多线程调用窗体组件的方法
- C#如何对多线程、多任务管理(demo)
- C#实现多线程的Web代理服务器实例