2015-07-12 14 views
0

我正在從串口讀取數據。數據來自IMU,我正在開發手勢識別算法。我不想用Thread.sleep()方法來停止整個程序,我只需要讀取相距10ms的兩組數據。我的應用程序有擺動GUI。我如何使用Java中的計時器

float x0, x1; 
    x0 = getXacc(); 
    x0 += 17000; 
    x0 /= 1000; 
    //wait 10ms 
    x1 = getXacc(); 
    x1 += 17000; 
    x1 /= 1000; 
+2

http://docs.oracle.com/javase/7/docs/api/java/util/Timer.html – jcoppens

+0

@PavolDudak如果您希望您的應用程序在變量賦值之間不「停止」,那麼您應該創建一個單獨的線程,該線程可以在創建任務時繼續運行。 –

+1

告訴你的問題的細節。發佈一個小型可編譯和可運行的程序,說明您的問題的相關細節。我猜你可能需要一個Swing Timer,但由於缺乏關於問題空間的相關信息而感到沮喪。 –

回答

1

使用@TimBiegeleisen答案,並把自己的代碼,以新的主題:

new Thread(){ 
    @Override 
    public void run(){ 
     //TimBiegeleisen code 
    } 
}.start(); 
+0

我想這是OP的想法。我的回答是給予OP的最佳解決方案。 –

+0

我也有點困惑,你的回答應該被標記爲已接受,我只想補充一下給你,我給你+1 @TimBiegeleisen – maskacovnik

2

使用Thread.sleep()

float x0, x1; 
x0 = getXacc(); 
x0 += 17000; 
x0 /= 1000; 
Thread.sleep(10); // tell current Thread to sleep for 10 milliseconds 
x1 = getXacc(); 
x1 += 17000; 
x1 /= 1000; 

注: Java的API不保證Thread.sleep()將暫停當前線程的正是規定的時間執行(在這種情況下爲10ms)但它會盡最大努力實現這一目標。

+1

我不能這樣做。整個計劃不能停止。 –

+0

誰說整個程序會停止?程序中的任何其他線程都將繼續執行。 –

+0

是的,程序會停下來,我試過了。 –