同步代码块比较经典的例子是火车站的售票员售票的过程,下面通过代码来分析同步代码块在这里面的作用。

package cn.sunzn.synchronize;

public class SynchronizeCode {
   public static void main(String[] args) {
       new TicketSeller().start();
       new TicketSeller().start();
       new TicketSeller().start();
       new TicketSeller().start();
   }
}

class TicketSeller extends Thread {

   private static int ticket = 100;
   private static Object lock = new Object();

   public void run() {
       while (true) {
           synchronized (lock) {
               /************ 每次售票前进行判断 ************/
               if (ticket == 0) {
                   break;
               }

               /************ 模拟售票的网络延迟 ************/
               try {
                   Thread.sleep(100);
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }

               /************ 符合条件后进行售票 ************/
               System.out.println(Thread.currentThread().getName() + " 售出了第 " + ticket-- + " 张票");
           }
       }
   }
}

更多相关文章

  1. JAVA 关于图片上传的代码
  2. 线程“main”中的异常java.lang.RuntimeException:无法编译的源代
  3. java 和 C 代码运行效率的比较(整理)
  4. Java:IntelliJ想法生成的代码错误地为所有Class名称添加了其包名
  5. 求一段与读取数据库数据,写入一个数组的javascript 代码!谢谢!!
  6. java动态编译 (java在线执行代码后端实现原理)
  7. java SSH员工管理系统以及Demo代码下载
  8. JavaScript 面向对象编程,严格过程的标准化编程法,目前为止最好的
  9. 8/人天,小记一次 JAVA(APP后台) 项目改造 .NET 过程(后台代码已完整

随机推荐

  1. PHP之依赖注入容器pimple
  2. PHP 天巡机票接口
  3. 在php和servlet应用程序之间进行通信
  4. 将csv文件保存到现有文件,但在新工作表和
  5. MySQL+PHP配置 Windows系统IIS版(转)
  6. php分页代码的问题,显示了两个当前页码,求
  7. [轉]PHP官方网站,php官方论坛,中文函数手册
  8. 找不到go-pear。bat文件PHP 5.5 Windows
  9. 检索InnoDB组合密钥表的最后插入ID
  10. php 实现下载的方法