1.抢购车票
package com.sxt.io2;
//并发:一个资源有多个代理
//sleep模拟网络延时,放大了问题发生的可能性
public class Web12306 implements Runnable{
private int tickets=100;
@Override
public void run() {
while(tickets>0){
if(tickets%20==0) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+"-->"+(tickets--));
}
}
public static void main(String[] args) {
Web12306 w=new Web12306();
new Thread(w,"aa").start();
new Thread(w,"bb").start();
new Thread(w,"cc").start();
}
}
2.龟兔赛跑
package com.sxt.io2;
//sleep模拟休息
public class Racer implements Runnable{
private static String winner;
private boolean flag;
@Override
public void run() {
for(int steps=1;steps<=100;steps++){
System.out.println(Thread.currentThread().getName()+"-->"+steps);
flag= gameOver(steps);
if(flag) break;
}
}
public boolean gameOver(int steps){
if(winner!=null) return true;
else if(steps==100) {
winner =Thread.currentThread().getName();
System.out.println("winner-->"+winner);
return true;
} else
return false;
}
public static void main(String[] args) {
Racer racer=new Racer();
new Thread(racer,"rablit").start();
new Thread(racer,"tortoise").start();
}
}
龟兔赛跑问题总结:
1、gameOver()方法中判断条件不能写成if(winner!=null||steps==100) return true;会出现两个winner