多线程---静态同步函数的锁是class(转载)
2015-02-10 14:54
323 查看
/**如果同步函数被静态修饰,那么他的锁就是该方法所在类的字节码文件对象 类名.class静态进内存时,内存中没有本类对象,但是一定有该类对应的字节码文件对象。该对象就是:类名.class 该对象的类型是class**/class Ticket implements Runnable{ private static int tick = 100; Object obj = new Object(); boolean flag = true; public void run() { if(flag) { while(true) synchronized(Ticket.class)//注意这里的锁要一致 //跟show()函数一样都是一个锁,show()锁是本身所以是this //同步的前提是:1、两个及其以上的线程;2、锁一样 { if(tick>0) { try{Thread.sleep(10);}catch(Exception e){} System.out.println(Thread.currentThread().getName()+"同步代码块"+tick--); } } }else { while(true) show(); } } public static synchronized void show()//锁是this { if(tick>0) { try{Thread.sleep(10);}catch(Exception e){} System.out.println(Thread.currentThread().getName()+"同步函数...."+tick--); } }}class ThisLock{ public static void main(String[] args) { Ticket t = new Ticket(); Thread t1 = new Thread(t); Thread t2 = new Thread(t); t1.start(); try{Thread.sleep(10);}catch(Exception e){} t.flag = false; t2.start(); }}
相关文章推荐
- java多线程-静态同步函数的锁是Class对象
- (多线程-静态同步函数的锁是Class对象)
- 多线程静态同步函数的锁是class 对象
- 面向对象-多线程(同步函数的锁是this与静态同步函数的锁是class)
- JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制
- JAVA 多线程静态同步函数的锁是class 对象
- (49)静态同步函数的锁是Class对象,例子:懒汉式--在多线程中存在问题--同步解决
- JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制
- 多线程静态同步函数的锁是class 对象
- 面向对象-多线程(同步函数的锁this与静态同步函数的锁class)
- JAVA 多线程静态同步函数的锁是class 对象
- java-静态同步函数的锁是Class对象
- java 多线程10:synchronized锁机制 之 锁定类静态方法 和锁定类.Class 和 数据String的常量池特性 同步静态方法
- java多线程之-----静态同步synchronized方法与synchronized(class) 代码块
- 多线程---同步函数(转载)
- 多线程之静态同步函数/方法
- 多线程三,同步函数、静态同步函数和单例设计模式中懒汉式即延迟加载模式的多线程问题(毕向东老师)
- 多线程---同步函数的锁是this(转载)
- 多线程——静态同步函数的锁的相关问题
- Java 多线程 静态同步函数