第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(); } }
运行截图: