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多线程示例就完成了,可以理解为多个取餐窗口同时对一个快餐资源进行操作,并且使得资源不会扣减至负数。