我想執行使用Java併發包的週期性動作,我用下面的代碼:ScheduledExecutorService的scheduleWithFixedDelay可贖回
ScheduledExecutorService daemon = Executors.newScheduledThreadPool(1);
daemon.scheduleWithFixedDelay(new AddressThread(ParentMap.getSingletonInstance(), dictionary, test),10, 10, TimeUnit.SECONDS);
其中AddressThread
是傳遞一個Runnable
類型。該代碼每10秒執行一次run()
,並按照我的預期工作。但是,我需要返回一個值,並且run()
不會讓我這樣做。有沒有像scheduleWithFixedDelay類似的方法,我可以通過Callable
界面而不是Runnable
並返回一些東西回來?如果不是,如果我想返回一個值,我該如何做與上面類似的東西?
scheduleWithFixedDelay只接受Runnable作爲參數,而不是Callable。 因此,ScheduledFuture的返回類型爲null。只有方法計劃接受Runnable和Callable。對於你的情況,我想這是有道理的使用它。最後但並非最不重要的一點,因爲您在池中使用單個線程,爲什麼不使用.newSingleThreadScheduledExecutor()而不是newScheduledThreadPool(1)? –