我目前還沒有任何代碼,但我有一種情況,我將在無線傳感器上實現Java應用程序。只能有一個主要的方法。如何在這種情況下實現線程?
將會有多個其他無線傳感器可以連接到我的傳感器。我的傳感器需要根據其他傳感器提供給我的信息進行計算。每個傳感器可以選擇是否要參與計算。每1秒鐘,我的傳感器進行一次計算。
所以基本上,我需要的是偵聽傳入傳感器,爲它們提供一個線程來與其交互,並從每個傳感器中檢索信息。
我的問題是,在我的應用程序中,如何監聽傳入的傳感器(阻止呼叫)並釋放我的應用程序以執行其計算?
我目前還沒有任何代碼,但我有一種情況,我將在無線傳感器上實現Java應用程序。只能有一個主要的方法。如何在這種情況下實現線程?
將會有多個其他無線傳感器可以連接到我的傳感器。我的傳感器需要根據其他傳感器提供給我的信息進行計算。每個傳感器可以選擇是否要參與計算。每1秒鐘,我的傳感器進行一次計算。
所以基本上,我需要的是偵聽傳入傳感器,爲它們提供一個線程來與其交互,並從每個傳感器中檢索信息。
我的問題是,在我的應用程序中,如何監聽傳入的傳感器(阻止呼叫)並釋放我的應用程序以執行其計算?
從一個高的水平,這就是你的應用程序會做
==主線程==
==處理器線程==
==處理線程==
感謝您在構建答案時的時間。這似乎是一個合乎邏輯的解決方案。我將調查這個實現。 – Jay 2012-03-21 23:56:52
需要接收所有通信線程的信息的另一線程。您應該查看java.util.concurrent中的實用程序,例如讓線程安全地將數據傳遞給另一個線程的BlockingQueue。
大部分你應該閱讀很多關於多線程:它不是一個平凡的話題。
你說得對。我對Java並不陌生,但我對多線程不太熟悉。我已經看到了一些關於BlockingQueue的東西,但是也許我可以使用'wait()'和'notify()'函數。 – Jay 2012-03-21 23:58:48
這會讓你開始。根據需要添加錯誤/異常檢查/處理。
public class Test {
static class WorkTask42 implements Runnable {
public void run() {
// background work
}
}
public static void main(String... args) throws Exception {
// repeat for each background task
WorkTask42 wt = new WorkTask42();
Thread a = new Thread(wt);
a.setDeamon(true);
a.start();
}
}
您正在描述一個偵聽連接的多線程服務器。有關教程,請參見[本頁]的底部(http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html)。 – 2012-03-21 23:07:41
嗨@AdamMihalcin。 Thansk爲您的答覆。因此,在'KKMultiServer'類中,它們有一個阻塞並等待套接字連接的while循環。這與我想要的相似。但是,該類只能接受傳入連接,而沒有其他任何內容。我的問題是我需要做其他計算,同時等待傳感器進行通信。我希望這是有道理的。 – Jay 2012-03-21 23:17:09
運行另一個線程進行計算? – Ishtar 2012-03-21 23:33:22