当前位置:嗨网首页>书籍在线阅读

11-案例实现

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

案例实现

根据以下步骤来完成本案例。

1.创建一个名为 PrimeGenerator 的类,并继承 Thread 类:

public class PrimeGenerator extends Thread{

2.重写 run() 方法——该方法包含一个无限 while 循环。在循环中,处理从1开始的连续数字。如果是奇数,那么将其输出到控制台:

@Override
public void run() {
  long number=1L;
  while (true) {
    if (isPrime(number)) {
      System.out.printf("Number %d is Prime\n",number);
    }

3.每处理完一个数字,通过 isInterrupted() 方法来判断当前线程是否已被中断。如果该方法返回 true ,那么表明当前线程已被中断。在这种情况下,在控制台上打印一条信息并终止线程:

    if (isInterrupted()) {
      System.out.printf("The Prime Generator has been Interrupted");
      return;
    }
    number++;
  }
}

4.实现 isPrime() 方法。详细代码参见1.2节。

5.现在,开始实现应用程序的主类,创建包含 main()方 法的 Main 类:

public class Main {
  public static void main(String[] args) {

6.创建 PrimeGenerator 类的对象,并启动它:

Thread task=new PrimeGenerator();
task.start();

7.在主线程中等待5s后,中断 PrimeGenerator 线程:

try {
  Thread.sleep(5000);
} catch (InterruptedException e) {
  e.printStackTrace();
}
task.interrupt();

8.输出中断线程的状态。这段代码的输出结果取决于它是在线程结束前还是线程结束后运行的:

System.out.printf("Main: Status of the Thread: %s\n",task.getState());
System.out.printf("Main: isInterrupted: %s\n",task.isInterrupted());
System.out.printf("Main: isAlive: %s\n", task.isAlive());
}

9.运行案例并查看结果。