新聞中心
Java線(xiàn)程池需要不斷的學(xué)習(xí),在學(xué)習(xí)的時(shí)候我們就要注意不少的問(wèn)題。下面我們就來(lái)看看具體的語(yǔ)言運(yùn)作環(huán)境如何才能滿(mǎn)足Java線(xiàn)程池相關(guān)程序的運(yùn)行。希望大家有所收獲。

澤庫(kù)網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)2013年開(kāi)創(chuàng)至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
無(wú)論是接收Runnable型參數(shù),還是接收Callable型參數(shù)的submit()方法,都會(huì)返回一個(gè)Future(也是一個(gè)接口)類(lèi)型的對(duì)象。該對(duì)象中包含了任務(wù)的執(zhí)行情況以及結(jié)果。調(diào)用Future的boolean isDone()方法可以獲知任務(wù)是否執(zhí)行完畢;調(diào)用Object get()方法可以獲得任務(wù)執(zhí)行后的返回結(jié)果,如果此時(shí)任務(wù)還沒(méi)有執(zhí)行完,get()方法會(huì)保持等待,直到相應(yīng)的任務(wù)執(zhí)行完畢后,才會(huì)將結(jié)果返回。
我們用下面的一個(gè)例子來(lái)演示Java5.0中Java線(xiàn)程池的使用:
Java代碼
- import java.util.concurrent.*;
- public class ExecutorTest {
- public static void main(String[] args) throws
InterruptedException,- ExecutionException {
- ExecutorService es = Executors.newSingleThreadExecutor();
- Future fr = es.submit(new RunnableTest());// 提交任務(wù)
- Future fc = es.submit(new CallableTest());// 提交任務(wù)
- // 取得返回值并輸出
- System.out.println((String) fc.get());
- // 檢查任務(wù)是否執(zhí)行完畢
- if (fr.isDone()) {
- System.out.println("執(zhí)行完畢-RunnableTest.run()");
- } else {
- System.out.println("未執(zhí)行完-RunnableTest.run()");
- }
- // 檢查任務(wù)是否執(zhí)行完畢
- if (fc.isDone()) {
- System.out.println("執(zhí)行完畢-CallableTest.run()");
- } else {
- System.out.println("未執(zhí)行完-CallableTest.run()");
- }
- // 停止線(xiàn)程池服務(wù)
- es.shutdown();
- }
- }
- class RunnableTest implements Runnable {
- public void run() {
- System.out.println("已經(jīng)執(zhí)行-RunnableTest.run()");
- }
- }
- class CallableTest implements Callable {
- public Object call() {
- System.out.println("已經(jīng)執(zhí)行-CallableTest.call()");
- return "返回值-CallableTest.call()";
- }
- }
- import java.util.concurrent.*;
- public class ExecutorTest {
- public static void main(String[] args) throws
InterruptedException,- ExecutionException {
- ExecutorService es = Executors.newSingleThreadExecutor();
- Future fr = es.submit(new RunnableTest());// 提交任務(wù)
- Future fc = es.submit(new CallableTest());// 提交任務(wù)
- // 取得返回值并輸出
- System.out.println((String) fc.get());
- // 檢查任務(wù)是否執(zhí)行完畢
- if (fr.isDone()) {
- System.out.println("執(zhí)行完畢-RunnableTest.run()");
- } else {
- System.out.println("未執(zhí)行完-RunnableTest.run()");
- }
- // 檢查任務(wù)是否執(zhí)行完畢
- if (fc.isDone()) {
- System.out.println("執(zhí)行完畢-CallableTest.run()");
- } else {
- System.out.println("未執(zhí)行完-CallableTest.run()");
- }
- // 停止線(xiàn)程池服務(wù)
- es.shutdown();
- }
- }
- class RunnableTest implements Runnable {
- public void run() {
- System.out.println("已經(jīng)執(zhí)行-RunnableTest.run()");
- }
- }
- class CallableTest implements Callable {
- public Object call() {
- System.out.println("已經(jīng)執(zhí)行-CallableTest.call()");
- return "返回值-CallableTest.call()";
- }
- }
運(yùn)行結(jié)果:
已經(jīng)執(zhí)行-RunnableTest.run()
已經(jīng)執(zhí)行-CallableTest.call()
返回值-CallableTest.call()
執(zhí)行完畢-RunnableTest.run()
執(zhí)行完畢-CallableTest.run()
使用完Java線(xiàn)程池后,需要調(diào)用它的shutdown()方法停止服務(wù),否則其中的所有線(xiàn)程都會(huì)保持運(yùn)行,程序不會(huì)退出。
標(biāo)題名稱(chēng):Java線(xiàn)程池在運(yùn)行后的結(jié)果反查
轉(zhuǎn)載來(lái)源:http://m.fisionsoft.com.cn/article/cdcgohs.html


咨詢(xún)
建站咨詢(xún)
