【java0009】多线程同步代码块和同步函数
2015-06-30 16:04
751 查看
同步代码块和同步函数
同步函数的使用的锁是this;
同步函数和同步代码块的区别:
同步代码块的锁是任意的对象。
建议使用同步代码块。
同步函数的使用的锁是this;
同步函数和同步代码块的区别:
同步函数的锁是固定的this。
同步代码块的锁是任意的对象。
建议使用同步代码块。
class Ticket implements Runnable { private int num = 100; // Object obj = new Object(); boolean flag = true; public void run() { // System.out.println("this:"+this); if(flag) while(true) { synchronized(this) { if(num>0) { try{Thread.sleep(10);}catch (InterruptedException e){} System.out.println(Thread.currentThread().getName()+".....obj...."+num--); } } } else while(true) this.show(); } public synchronized void show() { if(num>0) { try{Thread.sleep(10);}catch (InterruptedException e){} System.out.println(Thread.currentThread().getName()+".....function...."+num--); } } } class SynFunctionLockDemo { public static void main(String[] args) { Ticket t = new Ticket(); // System.out.println("t:"+t); Thread t1 = new Thread(t); Thread t2 = new Thread(t); t1.start(); try{Thread.sleep(10);}catch(InterruptedException e){} t.flag = false; t2.start(); } }
相关文章推荐
- Python3写爬虫(四)多线程实现数据爬取
- C#实现多线程的同步方法实例分析
- C#简单多线程同步和优先权用法实例
- C#多线程学习之(四)使用线程池进行多线程的自动管理
- C#多线程编程中的锁系统(三)
- C#多线程学习之(六)互斥对象用法实例
- 基于一个应用程序多线程误用的分析详解
- C#多线程学习之(三)生产者和消费者用法分析
- C#多线程学习之(一)多线程的相关概念分析
- C#多线程之Thread中Thread.IsAlive属性用法分析
- C#控制台下测试多线程的方法
- Ruby 多线程的潜力和弱点分析
- C#中WPF使用多线程调用窗体组件的方法
- c#实现多线程局域网聊天系统
- PHP使用CURL实现多线程抓取网页
- 浅解关于C#多线程的介绍
- 批处理程序中的“多线程”处理代码
- c#中多线程访问winform控件的若干问题小结
- C#中的多线程多参数传递详解
- nodejs中使用多线程编程的方法实例