java作业
来源:互联网 发布:域名name代表什么意思 编辑:程序博客网 时间:2024/06/07 01:32
题目
(7:8)猜小了
(3:2)猜大了
(8:7)猜大了
(1:4)猜小了
(4:2)猜大了
(4:8)猜小了
(3:9)猜小了
…
(7:8)猜小了
(9:5)猜大了
(6:8)猜小了
(9:1)猜大了
(7:1)猜大了
(4:9)猜小了
(6:5)猜大了
(9:6)猜大了
(3:3)猜对了
用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。要求每当第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对了”。猜数之前,要求第二个线程要等待第一个线程设置好要猜测的数。第一个线程设置好猜测数之后,两个线程还要相互等待,其原则是:第二个线程给出自己的猜测后,等待第一个线程给出的提示;第一个线程给出提示后,等待给第二个线程给出猜测,如此进行,直到第二个线程给出正确的猜测后,两个线程进入死亡状态。
package cn.ganggang;import java.util.Random;public class TestMain { public static final Object lock = new Object(); public static boolean isGuessDone = false; public static int bingoNum; public static void main(String[] args) { MyRunnable1 ru1 = new MyRunnable1(); new Thread(ru1).start(); MyRunnable2 ru2 = new MyRunnable2(); new Thread(ru2).start(); }}class MyRunnable1 implements Runnable { @Override public synchronized void run() { while (!TestMain.isGuessDone) try { Thread.sleep(200); synchronized (TestMain.lock) { setBingoNum(); } } catch (InterruptedException e) { e.printStackTrace(); } } public void setBingoNum() { Random r = new Random(); TestMain.bingoNum = r.nextInt(99) + 1; }}class MyRunnable2 implements Runnable { public static final int SMALLER = -1; public static final int BINGO = 0; public static final int BIGGER = 1; @Override public void run() { while (!TestMain.isGuessDone) try { Thread.sleep(200); synchronized (TestMain.lock) { Random r = new Random(); if (judgeNum(r.nextInt(99) + 1)) { TestMain.isGuessDone = true; } } } catch (InterruptedException e) { e.printStackTrace(); } } public boolean judgeNum(int guessNum) { System.out.print("(" + guessNum + ":" + TestMain.bingoNum + ")"); switch (TestMain.bingoNum < guessNum ? BIGGER : (TestMain.bingoNum == guessNum ? BINGO : SMALLER)) { case SMALLER: System.out.println("猜小了"); break; case BINGO: System.out.println("猜对了"); return true; case BIGGER: System.out.println("猜大了"); break; } return false; }}运行结果:
(7:8)猜小了
(3:2)猜大了
(8:7)猜大了
(1:4)猜小了
(4:2)猜大了
(4:8)猜小了
(3:9)猜小了
…
(7:8)猜小了
(9:5)猜大了
(6:8)猜小了
(9:1)猜大了
(7:1)猜大了
(4:9)猜小了
(6:5)猜大了
(9:6)猜大了
(3:3)猜对了
阅读全文
0 0
- JAVA作业
- Java作业
- Java作业
- java作业
- java作业
- JAVA作业
- java作业
- java作业
- Java作业。。。
- java作业。。。
- Java作业
- java作业
- java作业
- java作业
- java作业
- java作业
- java作业
- java作业
- java项目用window.open(url)后,url会自动加上项目全路径问题解决
- Linux中rpm命令误卸载了的恢复
- 如何转载博客文章
- ORA-28002: the password will expire within 7 days 解决方法
- 贝叶斯网络结构学习方法简介
- java作业
- shiro登录成功后指定跳转页面
- Java OCR tesseract 图像智能字符识别技术
- 使用xperf收集并使用Windows Performance Analyzer查看Windows性能信息
- ldap服务器搭建
- 欢迎使用CSDN-markdown编辑器
- spring注解:@ComponentScan,@Bean,@Import,@Component
- Oracle PL/SQL Dev工具(破解版)被植入勒索病毒的安全预警及自查通告
- 知识星球作业(第5周)