JavaSE8基础 多线程synchronized 同步静态方法的锁
2017-10-08 22:39
375 查看
礼悟:
公恒学思合行悟,尊师重道存感恩。叶见寻根三返一,江河湖海同一体。
虚怀若谷良心主,愿行无悔给最苦。读书锻炼养身心,诚劝且行且珍惜。
Runnable接口实现类:
测试类:
结果:
Java优秀,值得学习。
学习资源:itcast和itheima视频库。如果您有公开的资源,可以分享给我的话,用您的资源学习也可以。
博文是观看视频后,融入思考写成的。博文好,是老师讲得好。博文坏,是 给最苦 没认真。
公恒学思合行悟,尊师重道存感恩。叶见寻根三返一,江河湖海同一体。
虚怀若谷良心主,愿行无悔给最苦。读书锻炼养身心,诚劝且行且珍惜。
os :windows7 x64
jdk:jdk-8u131-windows-x64
ide:Eclipse Oxygen Release (4.7.0)
jdk:jdk-8u131-windows-x64
ide:Eclipse Oxygen Release (4.7.0)
Runnable接口实现类:
package blog.jizuiku7; /* * @author jizuiku * @version V17.09.27 */ public class SellTicket implements Runnable { // 因为静态方法中会用到ticket变量,所以需要加上static private static int ticket = 100; private boolean flag = true; @Override public void run() { // TODO Auto-generated method stub while (true) { // 加个延迟,一来是模拟网络延迟 // 二来是 可以更好体现多线程的特点 try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (flag) { // 锁对象是同一个的时候,共享资源才可以处理妥当 synchronized (SellTicket.class) { if (ticket > 0) { System.out.println(Thread.currentThread().getName() + ":" + "正在卖出No." + (ticket--)); } } } else { try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } synchronizedFunction(); } // 翻转标志 flag = !flag; } } // 这里没有指明锁对象 // 锁对象可以使任意对象 // this也可以,可是!!!这是一个静态方法,用不了this呀! // 那么 静态方法的 锁是啥? // "类名.class" 风清扬老师如是说道. // class文件已生,而静态函数才生 private static synchronized void synchronizedFunction() { if (ticket > 0) { System.out.println(Thread.currentThread().getName() + ":" + "正在卖出No." + (ticket--)); } } }
测试类:
package blog.jizuiku7; /* * @author jizuiku * @version V17.09.27 */ public class SellTicketDemo { public static void main(String[] args) { SellTicket stWindow = new SellTicket(); Thread stWindow1 = new Thread(stWindow, "售票窗口_0"); Thread stWindow2 = new Thread(stWindow, "售票窗口_1"); Thread stWindow3 = new Thread(stWindow, "售票窗口_2"); stWindow1.start(); stWindow2.start(); stWindow3.start(); } }
结果:
Java优秀,值得学习。
学习资源:itcast和itheima视频库。如果您有公开的资源,可以分享给我的话,用您的资源学习也可以。
博文是观看视频后,融入思考写成的。博文好,是老师讲得好。博文坏,是 给最苦 没认真。
相关文章推荐
- JavaSE8基础 多线程synchronized 同步的成员方法用的锁对象是this
- java多线程之-----静态同步synchronized方法与synchronized(class) 代码块
- java 多线程10:synchronized锁机制 之 锁定类静态方法 和锁定类.Class 和 数据String的常量池特性 同步静态方法
- Java:多线程,线程同步,synchronized关键字的用法(同步代码块、非静态同步方法、静态同步方法)
- java 多线程 方法1 继承Thread 加入同步synchronized代码块
- Java: synchronized详解,静态同步方法,普通同步方法,同步代码块
- (转)初学Java多线程:使用Synchronized关键字同步类方法
- 多线程数据同步之synchronized同步方法-多线程访问临界资源
- 多线程:synchronized同步方法
- 从头认识多线程-2.14 解决由同步的synchronized (newobject()) 引起的脏读的方法
- synchronized 同步方法中静态与非静态的区别
- 多线程有几种实现方法?同步有几种实现方法?静态同步方法和非静态有何不同?—— Java经典面试题系列
- Java多线程3.1:synchronized同步方法
- Java_基础—多线程(同步代码块和同步方法)
- 静态同步synchronized方法和synchronized(class)代码块
- 基础-函数-静态方法、非静态方法、静态成员、非静态成员与多线程
- 2.2.9同步静态方法与synchronized(class)
- (转)初学Java多线程:使用Synchronized关键字同步类方法
- java多线程编程之使用Synchronized关键字同步类方法
- Java基础-多线程-③线程同步之synchronized