《Java》Java“定時器和多執行緒”實際應用——定時器配合多執行緒
阿新 • • 發佈:2018-11-12
一、任務目標
完成一個java application應用程式,此應用程式公共類有一個double型類屬性(變數)x,初始值為0;在應用程式主程序中新開兩個執行緒,這兩個執行緒都進行死迴圈;第1個執行緒每隔300ms啟用一次,令類屬性x自加1.0並輸出顯示;第2個執行緒每隔400ms啟用一次,令類屬性x自加0.1並輸出顯示。
二、執行緒的實現——繼承Thread類
在Java中主要提供兩種方式實現執行緒,分別為繼承 java.lang.Thread 類與實現 java.lang.Runnable介面。
Thread 類中例項化的物件代表執行緒,繼承 Thread 類建立一個新執行緒的語法如下:
public class ThreadTest extends Thread{
}
完成執行緒真正功能的程式碼放在類的run()方法中,當一個類繼承 Thread 類後,就可以在該類中覆蓋 run() 方法,將實現該執行緒功能的程式碼寫入 run() 方法中,然後同時呼叫 Thread 類中的 start() 方法執行執行緒,也就是呼叫 run() 方法。
三、程式碼實現
注:關於Timer類
的使用請點選 -> 參考文章
程式程式碼:
import java.lang.Thread; //匯入Thread類
import java.util.Timer; //匯入Timer類
import java.util.TimerTask; //匯入TimerTask類
public class ThreadTest{ //建立ThreadTest類
/**
* @param args
*/
static double x = 0; //定義雙精度變數x
public static class T1 extends Thread{ //指定T1繼承Thread類
public void run(){ //Thread的run()方法
Timer timer1 = new Timer(); //建立Timer類物件timer
timer1.schedule (new TimerTask(){ //schedule方法延遲300ms
public void run(){ //TimerTask類的run()方法
x += 1.0;
System.out.println("當前x的值為:"+x);
}
},0,300);
}
}
public static class T2 extends Thread{
public void run(){
Timer timer2 = new Timer();
timer2.schedule(new TimerTask(){
public void run(){
x += 0.1;
System.out.println("當前x的值為:"+x);
}
},0,400);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new T1().start(); //啟動執行緒T1
new T2().start(); //啟動執行緒T2
}
}
執行結果: