java多线程安全问题 静态函数的修饰
2015-11-08 17:58
423 查看
/* 如果同步函数被静态修饰后,使用的锁是什么呢? 通过验证,发现不在是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(); } }
相关文章推荐
- Spring整合加载Hibernate文件
- Struts2 URL参数 s:if 判断运用
- leetcode:Add Two Numbers---------java源码
- java多线程安全问题-同步修饰符于函数
- Java内存回收机制(第三讲)
- java 多线程安全问题-同步代码块
- Spring中的报错:no matching editors or conversion strategy found
- 华为、阿里、京东使用的Java web框架是啥样的?
- json、javaBean、xml互转的几种工具介绍
- Spring MVC 框架搭建及详解
- spring配置数据源
- eff java 15条
- 进程和线程的关系,同时如何使用Java实现
- Caused by: java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
- Jaxb2 实现JavaBean与xml互转
- Spring横切面(advice),增强(advisor),切入点(PointCut)
- Java基础3笔记
- Struts2和Spring的mvc的区别
- myeclipse使用工具简化数据库开发
- java生成指定范围的随机数