多线程之静态同步函数/方法
2017-08-09 18:23
232 查看
/* 如果同步函数被静态修饰后,使用的锁是什么呢? 通过验证,发现不在是this。因为静态方法中也不可以定义this。 静态进内存是,内存中没有本类对象,但是一定有该类对应的字节码文件对象。 类名.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) { if(tick>0) { try{Thread.sleep(10);}catch(Exception e){} System.out.println(Thread.currentThread().getName()+"....code : "+ tick--); } } } } else while(true) show(); } public static synchronized void show() { if(tick>0) { try{Thread.sleep(10);}catch(Exception e){} System.out.println(Thread.currentThread().getName()+"....show.... : "+ tick--); } } } class StaticMethodDemo { 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(); } }
相关文章推荐
- 多线程静态方法同步
- 多线程静态方法同步
- 从头认识多线程-2.16 同步静态方法和静态代码块
- java 多线程10:synchronized锁机制 之 锁定类静态方法 和锁定类.Class 和 数据String的常量池特性 同步静态方法
- Java笔记3 多线程<1>线程概述、多线程的创建、多线程的安全问题、静态同步函数的锁、死锁
- JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制
- 多线程陷阱(不要调用run方法;静态的同步方法)
- Java多线程 6 静态同步方法的锁
- 多线程——静态同步函数的锁的相关问题
- JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制
- 基础-函数-静态方法、非静态方法、静态成员、非静态成员与多线程
- java多线程之-----静态同步synchronized方法与synchronized(class) 代码块
- 多线程---静态同步函数的锁是class(转载)
- (49)静态同步函数的锁是Class对象,例子:懒汉式--在多线程中存在问题--同步解决
- 多线程有几种实现方法?同步有几种实现方法?静态同步方法和非静态有何不同?—— Java经典面试题系列
- java多线程-静态同步函数的锁是Class对象
- 从头认识多线程-2.17 同步方法与同步静态代码块持有的是不同的锁
- JAVA 多线程静态同步函数的锁是class 对象
- Java 多线程 静态同步函数
- JAVA 多线程静态同步函数的锁是class 对象