//定义一个类实现Runnable接口,定义一个需要同步的售票方法,然后重写run方法调用售票的sale方法

      1. class SaleTicket implements Runnable{
      2. private int tickets = 100;
      3. private synchronized void sale(){
      4. if(tickets > 0){
      5. System.out.println(Thread.currentThread().getName() + "卖出 第 "+ (tickets--)+"张票");
      6. try{
      7. Thread.sleep(100);
      8. }catch(InterruptedException e){
      9. e.printStackTrace();
      10. }
      11. }
      12. }
      13. public void run(){
      14. while(tickets > 0){
      15. sale();
      16. }
      17. }
      18. }
      19. public class JavaTest {
      20. public static void main(String[] args){
      21. SaleTicket st = new SaleTicket();
      22. Thread t1 = new Thread(st, "一号窗口");
      23. Thread t2 = new Thread(st, "二号窗口");
      24. Thread t3 = new Thread(st, "三号窗口");
      25. Thread t4 = new Thread(st,"四号窗口 ");
      26. t1.start();
      27. t2.start();
      28. t3.start();
      29. t4.start();
      30. }
      31. }

JAVA多线程售票问题的更多相关文章

  1. java多线程(内附实例:窗口售票问题、人和叉子的问题)

    java多线程的开发有两种方法: (1)实现Runnable接口: (2)继承Thread类: 区别: (1)由于java中一个类只能继承一个父类,但是可以实现多个接口,所以实现Runnable接口比 ...

  2. java 多线程的售票问题

    java 多线程的售票问题 对票的库存进行操作 public class Tickets implements Runnable{ private int ticket = 100; public v ...

  3. Java多线程学习笔记

    进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间.(只负责空间分配) 线程:进程中的一个执行单元,负责进程汇总的程序的运行,一个进程当中至少要有一个线程. 多线程:一个进程中时可以有多个线 ...

  4. Java多线程简析

    一.线程的状态: 线程共有下面4种状态: 1.新建状态(New): 新创建了一个线程对象,当你用new创建一个线程时,该线程尚未运行. 2.就绪状态(Runnable): 线程对象创建后,其他线程调用 ...

  5. Java 多线程——基础知识

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  6. Java 多线程-上课总结

    Java 多线程 一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启 ...

  7. java 多线程(总结)

    今天看了几篇关于java多线程问题的文章,将他们的部分内容引过来总结下,也算是对java多线程这类问题的整理. 在多线程中,必须明白两个问题,一是多线程实现,二是代码同步. 在java中要想实现多线程 ...

  8. 基于线程池的多线程售票demo2.0(原创)

    继上回基于线程池的多线程售票demo,具体链接: http://www.cnblogs.com/xifenglou/p/8807323.html以上算是单机版的实现,特别使用了redis 实现分布式锁 ...

  9. 【52】java多线程剖析

    线程的状态: 线程共有下面4种状态: 新建状态(New): 新创建了一个线程对象,当你用new创建一个线程时,该线程尚未运行. 就绪状态(Runnable): 线程对象创建后,其他线程调用了该对象的s ...

随机推荐

  1. linux之netstat命令

    netstat用于显示各种网络相关的信息,如网络连接,路由表接口状态(interface statistics), masquerade连接,多播成员(Multicast Memberships)等等 ...

  2. raspbian调整键盘设置

    参考 http://www.jianshu.com/p/8c474339a238 树莓派(raspberry pi)是英国产品,默认键盘布局是英国(GB),我们用的键盘布局一般是美国(US)的(104 ...

  3. js识别当前用户设备的几个方法

    公司要做一个APP下载页面,里面需要判断是安卓还是苹果访问本页面,最开始想偷懒直接在给IOSAPP返回IOSAPP商店地址,然后Android直接进行访问.但想着毕竟做两个页面不利于后期维护和修改,打 ...

  4. C# Interface的使用方法探讨

    接口是把公共实例(非静态)的方法和属性结合起来,以封装特定功能的一个集合,一旦定义了接口,就可以在类中使用实现接口中的所有成员,接口可以看作创建者和使用者之间的契约,一旦实现了接口,就不要轻易变动(如 ...

  5. 【mongo】mongoVUE使用

    1.查询存在字段"test"的项 {"test":{$exists:true}} 2.在表中插入字段 {$set:{"}} 3.正则匹配 {" ...

  6. 基于SSM的租赁管理系统0.3_20161225_数据库设计

    数据库设计 1. 概念模型 2. 类模型 3. 生成SQL use test; /*========================================================== ...

  7. iOS之中途修改类名

    中途修改类名 在开发过程中,可能感觉之前设置的类名不够代表性,或者发现名字拼写错误等等诸如此类的原因,需要修改类名,不懂技巧的话简直不敢改,现在这里就记录下该类名的方法. 具体步骤如下: .h文件里选 ...

  8. android include进来的组件 调用其子元素

    include标签包裹着一个可复用的布局: <include layout="@layout/footer_detail" android:id="@+id/foo ...

  9. My year of 2016

    2016, year of excellence.   Year of happiness. In Beijing we can also find some happiness which is s ...

  10. Hadoop单机模式安装-(2)安装Ubuntu虚拟机

    网络上关于如何单机模式安装Hadoop的文章很多,按照其步骤走下来多数都失败,按照其操作弯路走过了不少但终究还是把问题都解决了,所以顺便自己详细记录下完整的安装过程. 此篇主要介绍在虚拟机设置完毕后, ...