/*
*售票,多线程入门小例子。
*/
package classfile;
public class SaleOfTicketsDemo
{
public static void main(String[] args)
{
Ticket t = new Ticket();
new Thread(t).start();//开启多线程卖票
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
}
}
class Ticket implements Runnable//通过实现Runnable接口,让数据独立存在,可以让多个线程共享。
{
private int tickets = 100;
private boolean flag = true;//控制线程运行的标记
public void run()
{
while(flag)
{
//为了暴露多线程的安全问题
try
{
Thread.sleep(10);
}
catch (Exception e)
{
}
synchronized(Ticket.class)//解决多线程的安全问题
{
if(tickets!=0)//在修改票的数量时需要二次判断
{
System.out.println(Thread.currentThread().getName()+"..."+(tickets--));
}
}
if(tickets==0)
{
flag = false;
}
}
}
}
卖票
最新推荐文章于 2022-04-09 17:10:58 发布