15周多线程2 猜数字


public class example {
   /* 用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,
    第二个线程负责猜出这个数。要求每当第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对了”。猜数之前
    ,要求第二个线程要等待第一个线程设置好要猜测的数。第一个线程设置好猜测数之后,
    两个线程还要相互等待,其原则是:第二个线程给出自己的猜测后,等待第一个线程给出的提示;第一个线程给出提示后,等待给第二个线程给出猜测
    ,如此进行,直到第二个线程给出正确的猜测后,两个线程进入死亡状态。*/
        public static void main(String args[]) {
        Number number = new Number();
        number.Thread1.start();
        number.Thread2.start();
        }
        }
        class Number implements Runnable {
            int num;   
        int Number1,Number2,min = 0,max = 100;
        Thread Thread1,Thread2;
        Number() {
        Thread1 = new Thread(this);
        Thread2 = new Thread(this);}
        public int getNum() {  
            return num;  
        }  
        public void setNum(int num) {  
            this.num = num;  
        }     


        public void run() {
        for (int count = 1; true; count++) {
        if (Thread.currentThread() == Thread1) {
        if (count == 1) {
            Number1=getNum();
        System.out.println("随机给你一个数为"+Number1+",猜猜是多少");
        } else {
        if (Number1 > Number2) {
        System.out.println("你猜小了");
        } else if (Number1 <Number2) {
        System.out.println("你猜大了");
        } else {
        System.out.println("恭喜,你猜对了");
        return;
        }
        }
        try {
        Thread.sleep(1500);
        } catch (Exception e) {
        }
        }
        if (Thread.currentThread() == Thread2) {
        if (count == 1) {
        Number2 = (min + max) / 2;
        System.out.println("我第" + count + "次猜这个数:" + Number2);
        } else {
        if (Number1 > Number2) {
        min = Number2;
        Number2 = (min + max) / 2;
        System.out.println("我第" + count + "次猜这个数是"
        + Number2);
        } else if (Number1 < Number2) {
        max = Number2;
        Number2 = (min + max) / 2;
        System.out.println("我第" + count + "次猜这个数是"
        + Number2);
        } else  {
        System.out.println("我成功了");
        return;
        }
        }
        try {
        Thread.sleep(1500);
        } catch (Exception e) {
        }
        }
        }
        }
        }

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值