为什么我的java程序明明开启了4条线程,却只有一条线程在运行?

packagecom.heima.syn;publicclassDemo4_Ticket{/***@paramargs*火车站卖票的例子用实现Runnable接口//此办... package com.heima.syn;

public class Demo4_Ticket {

/**
* @param args
* 火车站卖票的例子用实现Runnable接口 //此办法做不出来
*/
public static void main(String[] args) {
MyTicket mt = new MyTicket();
new Thread(mt).start();
new Thread(mt).start();
new Thread(mt).start();
new Thread(mt).start();

/*Thread t1 = new Thread(mt); //多次启动一个线程是非法的
t1.start();
t1.start();
t1.start();
t1.start();*/
}

}

class MyTicket implements Runnable {
private int tickets = 100000;
@Override
public void run() {
while(true) {
synchronized(this) {
if(tickets <= 0) {
break;
}
try {
Thread.sleep(10); //线程1睡,线程2睡,线程3睡,线程4睡
} catch (InterruptedException e) {

e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "...这是第" + tickets-- + "号票");
}
}
}
}

结果
Thread-0...这是第100000号票
Thread-0...这是第99999号票
Thread-0...这是第99998号票
Thread-0...这是第99997号票
。。。。。。
展开
 我来答
心城将
2018-11-22
知道答主
回答量:4
采纳率:0%
帮助的人:3223
展开全部
是匿名对象的原因,匿名对象不是强引用,对象声明生命周期短,当第一条线程执行run之后,二三四条线程应该是被虚拟机回收了。一般多线程都不用匿名对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泉凝物497
2017-12-02 · 超过11用户采纳过TA的回答
知道答主
回答量:57
采纳率:38%
帮助的人:10.3万
展开全部
Thread t1 = new Thread(r1, "1号窗口");// 创建线程
Thread t2 = new Thread(r1, "2号窗口");// 创建线程
Thread t3 = new Thread(r1, "3号窗口");// 创建线程
Thread t4 = new Thread(r1, "4号窗口");// 创建线程
t1.start();
t2.start();
这样创建多线程
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-12-02
展开全部
你要等待久一点,才可以看到其他的线程,因为线程是不稳定的。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式