[javaSE] 多线程(售票例子)详解编程语言

需求:简单的买票程序,多个窗口卖票,多线程

 

定义一个类Ticket实现Runnable接口,

定义成员属性int类型的票数nums

实现run()方法,run方法中

while(true)的死循环,打印nums–

 

获取Ticket对象,new出来

获取Thread()对象,new出来,构造参数:Runable对象

调用Thread对象的start()方法,开启线程

 

此时会有线程安全问题,使用synchronized同步代码块解决安全问题

 

避免死锁问题,同步中嵌套同步,而锁不同

class Ticket implements Runnable { 
    private int nums = 100; 
 
    @Override 
    public void run() { 
 
        while (true) { 
            synchronized (this) { 
                if (nums > 0) { 
                    try { 
                        Thread.sleep(10); 
                    } catch (Exception e) { 
                        e.printStackTrace(); 
                    } 
                    System.out.println(Thread.currentThread().getName() + "===" 
                            + (nums--)); 
                }else{ 
                    break; 
                } 
 
            } 
        } 
    } 
 
} 
 
public class TicketDemo { 
 
    /** 
     * @param args 
     */ 
    public static void main(String[] args) { 
        Ticket ticket = new Ticket(); 
        new Thread(ticket).start(); 
        new Thread(ticket).start(); 
        new Thread(ticket).start(); 
        new Thread(ticket).start(); 
    } 
 
}

[javaSE] 多线程(售票例子)详解编程语言

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/12646.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论