📄 testthread.java
字号:
import java.io.*;
public class TestThread //Java Application主类
{
public static void main(String args[])
{
if(args.length<1)
{ //要求用户输入一个命令行,否则程序不能进行下去
System.out.println("请输入一个命令行参数");
System.exit(0);
} //创建用户Thread子类的对象实例,使其处于NewBorn状态
primeThread getPrimes = new primeThread(Integer.parseInt(args[0]));
getPrimes.start(); //启动用户线程,使其处于Runnable的状态
while( getPrimes.isAlive() && getPrimes.ReadyToGoOn())
{
System.out.println("Counting the prime number...\n");//说明主线程在运行
try
{
Thread.sleep(500);//使主线程挂起指定毫秒数,以便用户线程取得
} //控制权,sleep是static的类方法
catch(InterruptedException e)//sleep方法可能引起的异常,必须加以处理
{
return;
}
}//while循环结束
System.out.println("按任意键继续... "); //保留屏幕,以便观察
try{
System.in.read();
}
catch(IOException e) {}
}//main方法结束
}//主类结束
class primeThread extends Thread
{ //创建用户自己的Thread子类,在其run()中实现程序子线程操作
boolean m_bContinue = true; //标志本线程是否继续
int m_nCircleNum; //循环的上限
primeThread(int Num) //构造函数
{
m_nCircleNum = Num;
}
boolean ReadyToGoOn() //判断本线程是否继续执行
{ return(m_bContinue); }
public void run()
{ //继承并重载父类Thread的run()方法,在该线程被启动时自动执行
int number = 3;
boolean flag = true;
while(true) //无限循环
{
for (int i=2;i<number;i++) //检查number是否为素数
if( number % i ==0 )
flag = false;
System.out.println(flag);
if(flag) //打印该数是否为素数的信息
System.out.println(number+"是素数");
else
System.out.println(number+"不是素数");
number++; //修改number的数值,为下一轮素数检查做准备
if ( number > m_nCircleNum ) //到达要求检查数值的上限
{
m_bContinue = false; //则准备结束此线程
return; //结束run()方法,结束线程
}
flag = true; //恢复flag,准备检查下一个number
try
{ //一轮检查之后,暂时休眠一段时间
sleep(500);
}
catch(InterruptedException e)
{
return;
}
}//while循环结束
}//run()方法结束
}//primeThread类定义结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -