简单模拟12306抢票
package TCPUDPThread;
/**
* 测试Runnable共享资源
* 并发问题(数据安全=数据准确)
* @author pmc
*
*/
public class Web12306 implements Runnable {
//票数
private int p=99;
@Override
public void run() {
while(true){
if(p<=0){
System.out.println(Thread.currentThread().getName()+"-->"+"没票了");
break;
}
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"-->"+p--);
}
}
public static void main(String[] args) {
//一份资源
Web12306 web=new Web12306();
//获取线程名称
System.out.println(Thread.currentThread().getName());
//多个代理
new Thread(web,"A").start();
new Thread(web,"B").start();
new Thread(web,"C").start();
new Thread(web,"D").start();
}
}
模拟龟兔赛跑
package TCPUDPThread;
public class RacerTest implements Runnable{
private static String name;//胜利
//int temp=1;
@Override
public void run() {
for(int temp=1;temp<=100;temp++){
//模拟休息
if(Thread.currentThread().getName().equals("兔子")&&temp%10==0){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+"-->"+temp);
boolean flag=gameOver(temp);
if(flag){
break;
}
}
}
private boolean gameOver(int temp){
if(name!=null){
return true;
}else{
if(temp==100){
name=Thread.currentThread().getName();
System.out.println("name="+name);
return true;
}
}
return false;
}
public static void main(String[] args) {
RacerTest a=new RacerTest();
new Thread(a,"兔子").start();
new Thread(a,"乌龟").start();
}
}