第16周作业

题目1:编写一个应用程序,利用Java多线程机制,实现时间的同步输出显示。

/**   创建一个 ThreadObject 类用来获取当前时间,在主类中输入显示 。   */

ThreadObject 类:

import java.util.Date;

public class TimeObject implements Runnable {

    public void run() {
        Date date = null;
        while(true) {
            date = new Date();
            System.out.println(date);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }

}

Test 类:

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Thread t = new Thread(new TimeObject());
        t.start();
        
    }
}

运行截图:

 

 

题目2:编写一个应用程序,利用Java多线程机制,实现猜数字游戏(随机数范围0~100之间的整数)。

/**      创建一个Number 类继承Thread 类,包含一个猜数字的静态方法 guessnum(),可以用类名调用;

          创建Guess 类继承 Thrad 类,定义猜数规则:第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对了”。

     第一个线程给出提示后,等待给第二个线程给出猜测,直到第二个线程给出正确的猜测后,两个线程进入死亡状态。

          在主类 GuessNumber 中实现这个游戏。             */

Number 类:

import java.util.Random;

public class Number extends Thread{
    String name1;     
    private static int n;      
    Number(String name){          
        name1 = name;      
    }      
    public void run() {          
        Random random = new Random();         
        n = random.nextInt(100);          
        System.out.println(name1+"给出的数字为:"+n);      
    }      //猜数字(静态方法,可通过类名调用)     
    public static String guessnum(int m) {         
        if(m<n) {             
            return "猜小了";         
        }else if(m > n){             
            return "猜大了";         
        }else return "猜对了";     
    } 

}

Guess 类:

import java.util.Random;

public class Guess extends Thread{
    String name2;    
    private int min = 0,max = 100,now;     
    String Result;      
    Guess(String name){         
        name2=name;     
    }       
    public String getGuess() {          
        return Result;      
    }     
    public void run() {         
        while(true) {           
            try{                 
                Thread.sleep(2000);         
            }catch(InterruptedException e){    
                    e.printStackTrace();             
            }         
            Random ran = new Random(); 
            now = min+ran.nextInt(max-min);      
            Result = Number.guessnum(now);          
            if(Result.equals("猜小了")) {             
                min=now;             
                System.out.println("线程二猜的数字是:"+now+"---猜小了");        
            }else if(Result.equals("猜大了")) {   
                max=now;     
                System.out.println("线程二猜的数字是:"+now+"---猜大了");         
            }else {             
                System.out.println("线程二猜的数字是:"+now+"---猜对了,结果是"+now);     
                System.exit(0);         
            }                  
        }
    }  

}

GuessNumber 类:

public class GuessNumber {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
          Number num = new Number("线程一");  
          num.start();  
          Guess gue = new Guess("线程二");  
          gue.start(); 
    }

}

运行截图:

posted @ 2019-12-22 20:29  季英杰  阅读(175)  评论(0编辑  收藏  举报