線程的啟動(1) - 利用Thread 類的子類
參考如下範例, PrintThread 類是根據建構子傳入預重複的字串與重複次數. 並且繼承自 Thread 成為其子類.
之後在main 中建立兩個 PrintThread的實例並呼叫其父類的 API:start() 啟動線程. 範例代碼如下 :
- package dp.thread;
- /**
- * BN : Java 多線程設計模式 (Page 18)
- * BD :
- * Demo 啟動線程
- * @author John
- */
- public class PrintThread extends Thread{
- private String message; //Print message
- private int times = 1; //Loop times
- public PrintThread(String m,int t){
- this.message = m;
- this.times = t;
- }
- public void run(){
- for(int i=0;i
- System.out.println(this.getId()+":"+message);
- }
- }
- public static void main(String argsp[]){
- new PrintThread("Good!",10).start();
- new PrintThread("Nice",10).start();
- }
- }
線程的啟動(2) - 利用Runnable 介面
繼續說明利用了實現了介面 Runnable 的類的實例以啟動線程的方法. Runnable 接口是 java.lang Package 裡的接口, 聲明方法如下:
- public interface Runnable{
- public abstract void run();
- }
Printer 類為實現Runnable 介面的類別, 並透過建構子傳入預重複的字串與重複次數. 並在main 方法裡首先建立Thread 的實例並以Printer實例為其建構子參數傳入. 在透過Thread 的API : start() 啟動線程. 範例代碼如下 :
- package dp.thread;
- /**
- * BN : Java 多線程設計模式 (Page 20)
- * BD :
- * Demo 啟動線程
- * @author John
- */
- public class Printer implements Runnable{
- private String message;
- private int times;
- public Printer(String m,int t){
- this.message = m;
- this.times = t;
- }
- @Override
- public void run() {
- for(int i=0;i
- System.out.println(message);
- }
- }
- public static void main(String args[]){
- new Thread(new Printer("Good",10)).start();
- new Thread(new Printer("Nice",10)).start();
- }
- }
線程的暫時停止 :
利用 Thread 類別的 API : sleep 方法可以暫時停止線程的執行. API : sleep 是類別方法. 執行下面的語句可以讓當前線程 (執行此語句的線程) 暫時停止約 1000 ms (約 1s) :
- Thread.sleep(1000);
如下範例代碼為一個連續輸出 "Good!" 的程序, 約每顯示一次就暫停線程1000 ms :
- package dp.thread;
- /**
- * BN : Java 多線程設計模式 (Page 21)
- * BD :
- * Demo 暫時停止線程
- * @author John
- */
- public class SleepThread {
- /**
- * @param args
- */
- public static void main(String[] args) {
- for(int i=0;i<10;i++){
- System.out.println("Good! ");
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
沒有留言:
張貼留言