有人可以給我顯示如何在單個服務上使用兩個不同線程的代碼示例嗎?我沒有找到做在谷歌的方式,那麼我就需要一個代碼示例...我如何將兩個不同的線程放在單個服務上?
一個等待5秒鐘,其他等待60秒後,用不同的代碼
有人可以給我顯示如何在單個服務上使用兩個不同線程的代碼示例嗎?我沒有找到做在谷歌的方式,那麼我就需要一個代碼示例...我如何將兩個不同的線程放在單個服務上?
一個等待5秒鐘,其他等待60秒後,用不同的代碼
Thread t5 = new Thread(Runnable_that_waits_5_seconds);
Thread t60 = new Thread(Runnable_that_waits_60_seconds);
t5.start();
t60;start();
現在,你只需要定義你的runnables。
另外,你應該給你的runnables一個方法來檢測它們是否被中斷,如果它們終止了,並且中斷服務的清理代碼中的每個線程。
可以使用ScheduledExecutorService創建和運行計劃的事件,然後將它們像這樣:
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);
final Runnable r1 = new Runnable() {
@Override
public void run() {
Log.i("TestStuff", "r1 ran at " + new Date());
}
};
final Runnable r2 = new Runnable() {
@Override
public void run() {
Log.i("TestStuff", "r2 ran " + new Date());
}
};
scheduler.schedule(r1, 5, TimeUnit.SECONDS);
scheduler.schedule(r2, 60, TimeUnit.SECONDS);
注意,線程不能做UI上的任何東西,但你曾提到一個「單服務「,所以我假設你正在做所有非UI的東西。
我的服務應該實現可執行的runnable嗎? – NullPointerException 2011-06-02 13:18:06
您的服務不必實現可運行,您可以聲明一個可運行的類(其中兩個)。 markf的例子顯示了這方面的事情(和一個調度技術;以我的例子你需要每個線程先睡)。 – mah 2011-06-02 13:21:59