Java线程中卖火车票问题的深入讲解

网友投稿 265 2022-11-13


Java线程中卖火车票问题的深入讲解

用java代码模拟卖100张火车票问题:四个售票窗口同时售票且不能卖出同一张火车票。

代码如下。

package lesson;

public class Demo1 {

public static void main(String[] args) {

// TODO Auto-generated method stub

Train tt = new Train();

Thread t1 = new Thread(tt);

Thread t2 = new Thread(tt);

Thread t3 = new Thread(tt);

Thread t4 = new Thread(tt);

t1.setName("窗口1");

t2.setName("窗口2");

t3.setName("窗口3");

t4.setName("窗口4");

t1.start();

t2.start();

t3.start();

t4.start();

}

}

class Train implements Runnable{

int a= 1;

@Overridehttp://

public synchronizCIrXmjBed void run() {//synchronized为进程上锁

// TODO Auto-generated method stub

while(true) {

if(a<=100) {

System.out.println(Thread.curreCIrXmjBntThread().getName()+"卖出"+a+"号票");

a++;

}

try {

this.wait(230);

// Thread.sleep(100);//结果输出只有窗口1卖了所有票如图2所示

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

wait()正常运行结果图1:

sleep()运行结果如图2所示:

两种结果不同的主要主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可CIrXmjB以使用同步控制块或者方法。

总结


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微服务网关服务(微服务 网关)
下一篇:代码在线生成工具(自动化代码生成工具)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~