Java16周作业

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

/*使用Runnable接口使用类创建线程对象,重写run()方法**/

代码

 

public class timetext {

	
	public static void main(String[] args) {
		Thread thread =new Thread(new time());
		thread.start();

	}

}

  

import java.util.Date;


public class time implements Runnable {

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

}

  运行结果

 

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

代码

public class Test {


	public static void main(String[] args) {
		game ga=new game();
		ga.rand.start();
		ga.input.start();
		
	}

}

  

import java.util.*;
public class game implements Runnable {
	 Thread rand,input; 
	 int inputnum,random,flag;
	 boolean a=false,b=false;
	  public game(){
		  rand=new Thread(this);
		  input=new Thread(this);
	    }
	
	public void run() {
		 while(true){
	            compare(); 
	            if(flag==3)
	                return;
	        }
	}
	public synchronized void compare(){
		if(Thread.currentThread()==rand&&b==false){
            random=(int)(Math.random()*100)+1; 
            System.out.println("猜数游戏开始!");
            a=true;
            b=true;   
        }
		if(Thread.currentThread()==rand){
			if(a==true){
				try {
					wait();
				} catch (InterruptedException e) {
					
					e.printStackTrace();
				}
			}
			 if(inputnum<random){  
	                System.out.println("猜小了!请重猜!");
	                flag=1;
	            }
			 else if(inputnum>random){
	                System.out.println("猜大了!请重猜!");
	                flag=2;
	            }
			 else if(inputnum==random){
	                System.out.println("恭喜您猜对了!");
	                flag=3;
	            }
			 a=true;
	            notifyAll(); 
			
		}
		if(Thread.currentThread()==input){
			while(a==false){
				try {
					wait();
				} catch (InterruptedException e) {
					
					e.printStackTrace();
				}
			}
			 if(flag<3){
                 System.out.println("请输入您猜的数!");
                 Scanner r=new Scanner(System.in);
                 inputnum=r.nextInt();  
             }
             a=false;
		}
		notifyAll(); 
	}

}

  运行结果

posted @ 2019-12-22 18:18  shanshan3  阅读(167)  评论(0编辑  收藏  举报