work

来源:互联网 发布:linux 7种运行级别 编辑:程序博客网 时间:2024/05/16 06:13
  1. package cn.dustray;
  2. import java.util.Random;
  3. publicclassTestMain{
  4. publicstaticfinalObject lock=newObject();
  5. publicstaticboolean isGuessDone=false;
  6. publicstaticint bingoNum;
  7. publicstaticvoid main(String[] args){
  8. MyRunnable1 ru1 =newMyRunnable1();
  9. newThread(ru1).start();
  10. MyRunnable2 ru2 =newMyRunnable2();
  11. newThread(ru2).start();
  12. }
  13. }
  14. classMyRunnable1implementsRunnable{
  15. @Override
  16. publicsynchronizedvoid run(){
  17. while(!TestMain.isGuessDone)
  18. try{
  19. Thread.sleep(200);
  20. synchronized(TestMain.lock){
  21. setBingoNum();
  22. }
  23. }catch(InterruptedException e){
  24. e.printStackTrace();
  25. }
  26. }
  27. publicvoid setBingoNum(){
  28. Random r =newRandom();
  29. TestMain.bingoNum= r.nextInt(99)+1;
  30. }
  31. }
  32. classMyRunnable2implementsRunnable{
  33. publicstaticfinalint SMALLER=-1;
  34. publicstaticfinalint BINGO=0;
  35. publicstaticfinalint BIGGER=1;
  36. @Override
  37. publicvoid run(){
  38. while(!TestMain.isGuessDone)
  39. try{
  40. Thread.sleep(200);
  41. synchronized(TestMain.lock){
  42. Random r =newRandom();
  43. if(judgeNum(r.nextInt(99)+1)){
  44. TestMain.isGuessDone=true;
  45. }
  46. }
  47. }catch(InterruptedException e){
  48. e.printStackTrace();
  49. }
  50. }
  51. publicboolean judgeNum(int guessNum){
  52. System.out.print("("+ guessNum+":"+TestMain.bingoNum+")");
  53. switch(TestMain.bingoNum< guessNum? BIGGER:(TestMain.bingoNum== guessNum? BINGO: SMALLER)){
  54. case SMALLER:
  55. System.out.println("猜小了");
  56. break;
  57. case BINGO:
  58. System.out.println("猜对了");
  59. returntrue;
  60. case BIGGER:
  61. System.out.println("猜大了");
  62. break;
  63. }
  64. returnfalse;
  65. }
  66. }