#####idea代码运行无结果问题
同样都是这个代码,很简单的一个多线程实现,在同一个包下不同文件中
第一次写的过了
第二次重新建了个文件再写,运行后没有结果
按道理来说,应该是第一个没有运行结果,第二个有运行结果才对,
你是不是因为你的票是100 一个判断条件是>100 一个是》0
同步的锁改为this,
一般共享变量不用静态变量,而是线程实现Runnable接口达到共享变量的目的。
参考:
import java.util.Date;
public class Ticket implements Runnable{
//车票的数量
int count=500;
@Override
public void run() {
while(count>0) {
try {
/*同步:synchronized(锁),锁就是一个对象名称,通常可以直接传this
* 在同步语句块中的语句,确保在同一时刻只能由一个线程执行(互斥)
* */
synchronized (this) {
System.out.println("窗口名称:"+Thread.currentThread().getName()+",车票编号:"+count+",销售时间:"+ new Date().toLocaleString());
count--;
}
Thread.sleep(10);
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
public class TicketTest {
public static void main(String[] args) {
Ticket ticket = new Ticket();
//模拟4个售票窗口
Thread t1 = new Thread(ticket,"窗口1:");
Thread t2 = new Thread(ticket,"窗口2:");
Thread t3 = new Thread(ticket,"窗口3:");
Thread t4 = new Thread(ticket,"窗口4:");
Thread t5 = new Thread(ticket,"窗口5:");
Thread t6 = new Thread(ticket,"窗口6:");
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
t6.start();
}
}