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(); } }
运行结果