基于Java Callable接口實現(xiàn)線程代碼實例
實現(xiàn)Callable接口(jdk8新特性)
可以獲得線程的返回值
*前兩種方式?jīng)]有返回值,因為run方法返回void
創(chuàng)建一個未來任務(wù)類對象 Futrue task = new Future(Callable<>);重寫call()方法 可以使用匿名內(nèi)部類方式
task.get()方法獲取線程返回結(jié)果
get方法執(zhí)行會導致當前方法阻塞 效率較低
代碼如下
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class Test_13 {
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName() + "begin");
FutureTask task = new FutureTask(new Callable() {
@Override
public Object call() throws Exception {
System.out.println(Thread.currentThread().getName() + "start");
Thread.sleep(1000 * 5);
int a = 100;
int b = 200;
System.out.println(Thread.currentThread().getName() + "over");
return a + b;
}
});
Thread thread = new Thread(task);
thread.start();
try {
System.out.println(task.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "end");
}
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot Starter自定義之創(chuàng)建可復用的自動配置模塊方式
本文將詳細介紹如何設(shè)計和實現(xiàn)一個自定義的Spring Boot Starter,幫助讀者掌握這一強大技術(shù),提升代碼復用性和開發(fā)效率,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
MyBatis-plus更新對象時將字段值更新為null的實現(xiàn)方式
mybatis-plus在執(zhí)行更新操作,當更新字段為 空字符串 或者 null 的則不會執(zhí)行更新,如果要將指定字段更新null,可以通過以下三種方式實現(xiàn),感興趣的小伙伴跟著小編一起來看看吧2023-10-10
基于Java的Spring框架來操作FreeMarker模板的示例
這篇文章主要介紹了基于Java的Spring框架來操作FreeMarker模板的示例,講到了用于進行web模板文件的插值操作等例子,需要的朋友可以參考下2016-03-03

