2015-10-20 35 views
1

爲什麼後臺線程由ExecutorService產生的固定線程池不能正常工作?App Engine - 後臺線程無法正常工作

ThreadFactory bgThreadFactory = ThreadManager.backgroundThreadFactory(); 
ExecutorService executorService = Executors.newFixedThreadPool(nThreads, bgThreadFactory); 

如果我創建MoreExecutors.sameThreadExecutor()它就像一個魅力然而沒有多線程。

回答

0

從應用引擎java上的docs開始,您需要通過調用com.google.appengine.api.ThreadManager.currentRequestThreadFactory()來創建線程工廠,然後調用工廠的newRequestThread()方法。

+0

感謝您的回覆。 'currentRequestThreadFactory()'創建作用域爲當前請求的線程。這些線程將在當前請求結束時中斷,並且必須在請求期限內完成。我需要使用'backgroundThreadFactory()'創建能夠「超越」當前請求的線程,即在請求完成後繼續進行背景。 – matoni

+0

根據文檔後臺線程僅適用於後端https://cloud.google.com/appengine/docs/java/javadoc/com/google/appengine/api/ThreadManager.html#createBackgroundThread-java.lang.Runnable- – VallaDanger

1

似乎後臺線程也可以工作Executors.newFixedThreadPool(nThreads, bgThreadFactory);但是,由於某些原因,日誌不是由後臺線程產生的(至少不是所有的時間 - 仍然不知道爲什麼)。