Java多线程的一个简单示例

Java多线程简单示例

代码如下:
public class Canteen extends Thread{
          
   
    //餐总数
    static int rice = 20;
    //取餐凭证
    static Object key = "KEY";

    public Canteen(String name){
          
   
        super(name);
    }
    @Override
    public void run() {
          
   
        //有则可以出售
        while (rice > 0){
          
   
            synchronized (key){
          
   
                try{
          
   
                    if(rice > 0){
          
   
                        System.out.println(getName()+" 卖出一份快餐,当前剩余快餐数:"+--rice+"份");
                        sleep(1000);
                    }else {
          
   
                        System.out.println("餐已售罄!");
                    }
                } catch (InterruptedException e) {
          
   
                    e.printStackTrace();
                }
            }

        }


    }

    public static void main(String[] args) {
          
   
        //创建并启动
        new Canteen("取餐口1").start();
        new Canteen("取餐口2").start();
        new Canteen("取餐口3").start();
    }
}

这里我们需要运用 synchronized对其中代码块加锁,促使所有线程在任何时刻只能有一个线程对该代码块进行访问,从而使示例做到线程安全。

运行结果如下:

总结

提示:这里对文章进行总结:

以上,一个简单的Java多线程示例就完成了,可以理解为多个取餐窗口同时对一个快餐资源进行操作,并且使得资源不会扣减至负数。

经验分享 程序员 微信小程序 职场和发展