A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Demo_黑马 中级黑马   /  2016-5-26 22:52  /  1018 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package com.heima.syn;

  2. public class Demo4_Ticket {

  3.         /**
  4.          * @param args
  5.          * 火车站卖票的例子用实现Runnable接口
  6.          */
  7.         public static void main(String[] args) {
  8.                 MyTicket mt = new MyTicket();
  9.                 new Thread(mt).start();
  10.                 new Thread(mt).start();
  11.                 new Thread(mt).start();
  12.                 new Thread(mt).start();
  13.                
  14.                 /*Thread t1 = new Thread(mt);                                //多次启动一个线程是非法的
  15.                 t1.start();
  16.                 t1.start();
  17.                 t1.start();
  18.                 t1.start();*/
  19.         }

  20. }

  21. class MyTicket implements Runnable {
  22.         private int tickets = 100;
  23.         @Override
  24.         public void run() {
  25.                 while(true) {
  26.                         //synchronized(MyTicket.class) {
  27.                         synchronized(this) {
  28.                                 if(tickets <= 0) {
  29.                                         break;
  30.                                 }
  31.                                 try {
  32.                                         Thread.sleep(10);                                //线程1睡,线程2睡,线程3睡,线程4睡
  33.                                 } catch (InterruptedException e) {
  34.                                        
  35.                                         e.printStackTrace();
  36.                                 }
  37.                                 System.out.println(Thread.currentThread().getName() + "...这是第" + tickets-- + "号票");
  38.                         }
  39.                 }
  40.         }
  41. }
复制代码


10 个回复

倒序浏览
千斤顶。。。。。
回复 使用道具 举报
如果是Runnable实现的,那么加自定义名称的话好加吗
回复 使用道具 举报

如果是Runnable实现的,那么加自定义名称的话好加吗
回复 使用道具 举报

啥意思?
回复 使用道具 举报
后面优化一下输出
System.out.println(Thread.currentThread().getName() +"卖出第"+(101-ticket--)+"张票");
我觉得这样比较好
回复 使用道具 举报
Java中多线程的知识。
回复 使用道具 举报
zhenying.wang 发表于 2016-5-27 00:16
如果是Runnable实现的,那么加自定义名称的话好加吗

不知道唉,貌似不好加。。。
回复 使用道具 举报
woshijingke 发表于 2016-5-27 00:26
如果是Runnable实现的,那么加自定义名称的话好加吗

为什么要加自定义名称啊。。。大神给个解释哦,
回复 使用道具 举报
就是加自定义的话显示更方便啊,比如说改为窗口XX
回复 使用道具 举报
feey 中级黑马 2016-5-28 22:47:33
11#
谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马