同步例子-火车票
2017-02-22 12:31
162 查看
package com.pakage.ThreadAndRunnable; public class Runnable_demo implements Runnable{ private int ticket=10; public Runnable_demo(){ } @Override public void run() { for(int i=0;i<20;i++){ if(this.ticket>0){ //休眠1s秒中,为了使效果更明显,否则可能出不了效果 try { Thread.sleep(1000); } catch (Exception e) { e.printStackTrace(); } this.sale(); } } } public synchronized void sale(){ if(this.ticket>0){ System.out.println(Thread.currentThread().getName()+"号窗口卖出:"+this.ticket--+"号票"); } } public static void main(String args[]){ Runnable_demo demo=new Runnable_demo(); //基于火车票创建三个窗口 new Thread(demo,"a").start(); new Thread(demo,"b").start(); new Thread(demo,"c").start(); } }
程序的输出结果为:
2、使用同步块修改上面的例子:
package com.pakage.ThreadAndRunnable; public class Runnable_demo implements Runnable{ private int ticket=10; public Runnable_demo(){ } @Override public void run() { for(int i=0;i<20;i++){ synchronized(this){ if(this.ticket>0){ //休眠1s秒中,为了使效果更明显,否则可能出不了效果 try { Thread.sleep(1000); } catch (Exception e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"号窗口卖出:"+this.ticket--+"号票"); } } } } public static void main(String args[]){ Runnable_demo demo=new Runnable_demo(); //基于火车票创建三个窗口 new Thread(demo,"a").start(); new Thread(demo,"b").start(); new Thread(demo,"c").start(); } }
程序的输出结果:
相关文章推荐
- 一个简单的C#多线程间同步的例子
- 【Java】同步 例子
- 一个简单的C#多线程间同步的例子
- rsync+inotify实现服务之间的数据实时同步&&手动执行的例子
- 共享内存与同步线程的使用例子
- java多线程学习笔记(三) ——多线程实例火车票问题+同步synchronized初接触
- java学习7:银行存取款的例子,主要涉及对象同步问题,类似于数据库存取款,数据一致性问题
- 一个简单的C#多线程间同步的例子
- [转] D-Bus学习(四):基础小例子(同步和异步)
- linux 多线程用信号量进行同步例子
- JAVA多线程互斥同步例子
- java线程同步的小例子
- 一个简单的C#多线程间同步的例子 (转)
- 以关键代码段为例子详细讲解多线程中的同步技术
- Linux多进程多线程互斥同步例子
- QT之使用QReadWriteLocker互斥量同步线程小例子
- 一个简单的C#多线程间同步的例子
- 一个简单的C#多线程间同步的例子
- ajax 同步调用 返回字符串 java例子(全)及 从后台返回中文乱码解决方法
- 一个同步的例子