1. 程式人生 > >Java基礎 實驗六 多執行緒

Java基礎 實驗六 多執行緒

一、實驗內容

    在一個執行緒中求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()方法來實現多執行緒。