Java 100-008:マルチスレッドでウサギの競走を実現

1080 ワード

package java02;
/**
 *     java  100   008
 *             
 * @author Administrator
 *
 */
public class java0082 {
	public static void main(String[] args) {
		//    
		Racer r = new Racer();
		//    (  ,    )
		new Thread(r,"tortoise").start();
		new Thread(r,"rabbit").start();
	}
}

class Racer implements Runnable{
	public static String winner;
	
	public void run(){
		for(int steps=1;steps<=100;steps++) {
			//    
			if(Thread.currentThread().getName().equals("rabbit")&&steps%10==0) {
				try {
					Thread.sleep(1);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			
			System.out.println(Thread.currentThread().getName()+"-->"+steps);
			boolean flag = GameOver(steps);
			if(flag==true) {
				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;
			}	
		}
		return false;
	}
}