静态方法的同步代码
来源:互联网 发布:淘宝网购物女装夏装 编辑:程序博客网 时间:2024/05/17 22:01
- class Ticket implements Runnable
- {
- private int tick = 1000;
- //Object obj = new Object();
- boolean flag = true;
- public void run()
- {
- if(flag)//第一个进入的线程实行下面代码
- {
- while(true)
- {
- //synchronized(obj)//由于同步函数的是以this对象为锁的 此处如果使用obj对象作为锁
- //则不能实现同步 输出的数据会出现错误 程序的安全性不能得到保证
- synchronized(Ticket.class)//和下面的show函数使用同样的锁 可以保证同步
- {
- if(tick>0)
- {
- try{Thread.sleep(40);}catch(Exception e){}
- System.out.println(Thread.currentThread().getName() +" .....code..."+ tick--);
- }
- }
- }
- }//第二个进入的代码实行下面代码
- else
- while(true)
- show();//this.show();
- }
- publicstatic synchronized void show()//同步函数 以this为锁
- {
- if(tick>0)
- {
- try{Thread.sleep(40);}catch(Exception e){}
- System.out.println(Thread.currentThread().getName() +" .....show..."+ tick--);
- }
- }
- }
- class ThisLockDemo
- {
- public static void main(String []args)
- {
- Ticket t = new Ticket();
- Thread t1 = new Thread(t);
- Thread t2 = new Thread(t);
- t1.start();//开启第一个线程 但不一定马上执行
- t.flag = false;//改变标志
- try{Thread.sleep(40);}catch(Exception e){}//让主线程睡眠40毫秒 保证第一个线程先开始运行 且标志位改变
- t2.start();
- }
- }
0 0
- 静态方法的同步代码
- 同步代码块,同步方法,同步静态方法,同步非静态方法的区别
- 静态方法的同步测试
- 从头认识多线程-2.18 同步方法与同步静态代码块持有的是不同的锁
- 静态同步方法与非静态同步方法的区别
- Java: synchronized详解,静态同步方法,普通同步方法,同步代码块
- JAVA静态方法的同步问题~~~~~~~~~~~~~
- synchronized 同步方法中静态与非静态的区别
- JAVA静态方法同步
- 多线程静态方法同步
- 多线程静态方法同步
- 同步方法(非静态)
- 同步静态方法
- 多线程编程 使用 synchronized来同步静态方法 非静态方法 代码块
- java synchronized同步静态方法和同步非静态方法的区别与举例
- java synchronized同步静态方法和同步非静态方法的区别与举例
- java中静态的代码块,静态变量,静态方法
- java中静态的代码块,静态变量,静态方法
- Android --学习笔记
- ADS 1.2 在WIN7 64 下——编译测试程序出错的问题
- Index和Index Hint的区别
- iOS swift-2 (元组)
- XML解析1_XMLParser
- 静态方法的同步代码
- 黑马程序员————JAVA之反射
- mysql 清理分区表
- 精选的十二个ubuntu下的命令
- 找出能唯一标示一个字符串的最短前缀 Trie POJ 2001 Shortest Prefixes
- iOS开发中对OC字符串的相关操作<转>
- iOS swift-3 (闭包)
- 9.28 less
- 为什么互联网+只有一个+?而C++是两个+?