双线程猜数字 TwoThreadGuessNumber.java
生活随笔
收集整理的這篇文章主要介紹了
双线程猜数字 TwoThreadGuessNumber.java
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
雙線程猜數(shù)字
TwoThreadGuessNumber.java
public class TwoThreadGuessNumber {public static void main(String args[]) {Number number=new Number();number.giveNumberThread.start();number.guessNumberThread.start();} }Number.java
import java.lang.*; public class Number implements Runnable {final int SMALLER=-1,LARGER=1,SUCCESS=8;int realNumber,guessNumber,min=0,max=100,message=SMALLER;boolean pleaseGuess=false,isGiveNumber=false;Thread giveNumberThread,guessNumberThread;Number() {giveNumberThread = new Thread(this);guessNumberThread = new Thread(this);}public void run() {for(int count=1;true;count++) {setMessage(count);if( message==SUCCESS)return;}}public synchronized void setMessage(int count) {if(Thread.currentThread()==giveNumberThread&&isGiveNumber==false) {realNumber=(int)(Math.random()*100)+1;System.out.println("隨機(jī)給你一個(gè) 1 至 100 之間的數(shù),猜猜是多少?");isGiveNumber=true;pleaseGuess=true;}if(Thread.currentThread()==giveNumberThread) {while(pleaseGuess==true)try {wait();}catch(InterruptedException e){}if(realNumber>guessNumber) {message=SMALLER;System.out.println("你猜小了");}else if(realNumber<guessNumber) {message=LARGER;System.out.println("你猜大了");}else {message=SUCCESS;System.out.println("恭喜,你猜對(duì)了");}pleaseGuess=true;}if(Thread.currentThread()==guessNumberThread&&isGiveNumber==true) {while (pleaseGuess == false)try {wait();}catch (InterruptedException e) {}if (message == SMALLER) {min = guessNumber;guessNumber = (min + max) / 2;System.out.println("我第" + count + "次猜這個(gè)數(shù)是:" + guessNumber);}else if (message == LARGER) {max = guessNumber;guessNumber = (min + max) / 2;System.out.println("我第" + count + "次猜這個(gè)數(shù)是:" + guessNumber);}pleaseGuess = false;}notifyAll();} }點(diǎn)贊+++
總結(jié)
以上是生活随笔為你收集整理的双线程猜数字 TwoThreadGuessNumber.java的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 汉字输入练习 TypeChinese.j
- 下一篇: 谈谈你对面向过程与面向对象的理解