Java基础 实验六 多线程

版权声明:@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()方法来实现多线程。

猜你喜欢

转载自blog.csdn.net/y_dd6011/article/details/86374258