版权声明:@YDDUONG https://blog.csdn.net/y_dd6011/article/details/86374258
一、实验内容
在一个线程中求100以内素数,求出后休眠一个随机时间。在另一线程中求100以内能被3整除的数,求出后休眠一个随机时间。输出数据时应有提示,指明哪个线程输出的数据。
二、实验代码
1、NewOneThread.java
package questionTwo;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*求100以内素数,求出后休眠一个随机时间
*/
public class NewOneThread extends Thread{
public NewOneThread() {
super();
}
public NewOneThread(String str) {
super(str);
}
public void run() {
System.out.println("100以内素数:1");
System.out.println("100以内素数:2");
System.out.println("100以内素数:3");
for(int i = 4; i <= 100; i++) {
for(int j = 2; j <= i/2; j++) {
if(i%j == 0) {
break;
}
if(j == i/2) {
System.out.println("100以内素数:" + i);
}
}
}
long time = (long)(1000+Math.random()*3000);
System.out.println("100以内素数计算完毕,该线程将休眠" + time +"毫秒");
try {
super.sleep(time);
} catch (InterruptedException ex) {
Logger.getLogger(OneThread.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("100以内素数,该线程结束");
}
}
2、TwoThread.java
package questionTwo;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*求100以内能被3整除的数,求出后休眠一个随机时间
*/
public class TwoThread extends Thread{
public TwoThread() {
super();
}
public TwoThread(String str) {
super(str);
}
public void run() {
for(int i = 0; i <= 100; i++) {
if(i%3 == 0) {
System.out.println("被3整除的数:" + i);
}
}
long time = (long)(1000+Math.random()*3000);
System.out.println("100以内能被3整除的数计算完毕,该线程将休眠" + time +"毫秒");
try {
super.sleep(time);
} catch (InterruptedException ex) {
Logger.getLogger(OneThread.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("100以内能被3整除的数,该线程结束");
}
}
3、ExceptionSix.java(主类)
package exceptionsix;
import questionTwo.*;
/**
*多线程
* 主类
*/
public class ExceptionSix {
public static void main(String[] args) throws InterruptedException {
NewOneThread one = new NewOneThread();
one.start();
new TwoThread().start();
}
}
三、运行结果
四、实验小结
多线程可以通过thread和runnable来实现,都是重写run()方法,之后通过实例化对象调用start()方法来实现多线程。