Java基礎 實驗六 多執行緒
阿新 • • 發佈:2019-01-13
一、實驗內容
在一個執行緒中求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()方法來實現多執行緒。