多线程初探(六)
2016-01-19 14:39
239 查看
package com.liujunhua.it01; /** * 毕老师这一节的视频看了三遍,愣是没怎么看懂,待后续进一步分析-_-"; * * 如果同步函数被静态修饰后,使用的锁是什么呢? * 通过验证,发现不是this了,因为静态方法中不含有this * * 静态进内存时,内存中没有本类对象,但是一定有该类对应的字节码文件对象。 * 类名.class 该对象类型是class * * 静态的同步方法,使用的是该方法所在类的字节码文件对象。类名.class */ public class Demo01 { public static void main(String[] args) { Ticket ticket = new Ticket(); Thread t1 = new Thread(ticket); Thread t2 = new Thread(ticket); t1.start(); t2.start(); } } class Ticket implements Runnable { private static int tick = 400; Object obj = new Object(); boolean flag = true; @Override public void run() { // TODO Auto-generated method stub if (flag) { while (true) { /**************************************************************************/ synchronized (Ticket.class) {//这里修改后和静态方法用的是同一把锁 if (tick > 0) { try { Thread.sleep(10); } catch (Exception e) { // TODO: handle exception } System.out.println(Thread.currentThread().getName() + "######" + tick--); } } } }else { while (true) { show(); } } } /***************************************************************************************/ public static synchronized void show(){ if (tick > 0) { try { Thread.sleep(10); } catch (Exception e) { // TODO: handle exception } System.out.println(Thread.currentThread().getName()+"...code:"+tick--); } } }
相关文章推荐
- Java ObjectMapper String转HashMap
- EF报LINQ to Entities 不识别方法“Web_JZRepository.Models.copy_materials_details get_Item(Int32) ”,因此该方法无法转换为存储表达式。
- 【小松教你手游开发】【unity实用技能】Unity3D中Assetbundle技术使用心得
- oracle rac linux下安装
- 关于JAVA的修饰符
- [solr] - defType - 查询权重排序
- 表单中的一些隐晦的bug
- 单点登录实现原理
- JEMETER
- Raspberry Pi Finder
- 006-LAMP_MySQL_client
- Docker网络详解及pipework源码解读与实践
- Window下让JAR成为服务运行的方法
- iOS中在tableview上通知控制键盘弹起界面上推的方法
- 解决popupWindow 中EditText点击两次才能输入的问题
- django web开发指南 (参照)
- android中提示&对话框----Notification
- 关系型数据库分库分表解决方案
- centeros下tomcat开机自启动脚本
- [solr] - 环境搭建2