双线程猜数字
来源:互联网 发布:淘宝讲师 编辑:程序博客网 时间:2024/05/29 12:31
public class TwoThreadGuessNumber {public static void main(String[] args) {Number number=new Number();number.giveNumberThread.start();number.guessNumberThread.start();}}
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("随机给你一个1至100之间的数,猜猜是多少?");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("恭喜,你猜对了"); } 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+"次猜这个数是:"+guessNumber);} else if(message==LARGER) { max=guessNumber; guessNumber=(min+max)/2; System.out.println("我第"+count+"次猜这个数是:"+guessNumber); } pleaseGuess=false;}notifyAll();}}
阅读全文
0 0
- 双线程猜数字
- Java多线程之双线程猜数字
- 双线程操作
- 省赛 双线程dp
- 双线程互相等待
- 双线程dp
- 新建双线 程
- Python双线程使用
- 双线程卖火车票
- 单双线程
- 双线程临界区实现
- 双线程开辟双动画
- 双线程高效下载问题
- Sicily1767(双线程动态规划)
- java双线程滚动文字
- hdu 2686 双线程DP
- vijos 1493 双线程DP
- 1.10 双线程高效下载
- 每天一个linux命令(35):ln 命令
- Postman使用技巧之三:用Postman生成Request代码
- 每天一个linux命令(36):diff 命令
- C语言趣味一百道 第15道 2017_12_16
- JAVA学习笔记3
- 双线程猜数字
- 每天一个linux命令(37):date命令
- bzoj1070 [SCOI2007]修车
- 每天一个linux命令(38):cal 命令
- 图算法:最短路径之迪杰斯特拉算法
- 《二》STM32时钟使能及应用总结
- XPath
- 每天一个linux命令(39):grep 命令
- XGBoost参数调优指南