电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

java 創(chuàng)建線程的四種方式

瀏覽:4日期:2022-08-21 10:37:22

1、繼承Thread類方式

這種方式適用于執(zhí)行特定任務(wù),并且需要獲取處理后的數(shù)據(jù)的場景。

舉例:一個用于累加數(shù)組內(nèi)數(shù)據(jù)的和的線程。

public class AdditionThread extends Thread { private int sum = 0; private int[] nums;​ public AdditionThread(int[] nums, String threadName) { super(threadName); this.nums = nums; }​ @Override public void run() { for (int num : nums) { sum += num; } }​ public int getSum() { return sum; }}

調(diào)用方式:

public class Main { public static void main(String[] args) throws InterruptedException { int[] nums = {10, 12, 15, 200, 100}; AdditionThread thread = new AdditionThread(nums, 'AdditionThread'); thread.start(); thread.join();​ System.out.println('sum=' + thread.getSum()); }}

2、Runnable 接口方式

定義一個實現(xiàn)Runnable接口的類,或者直接創(chuàng)建一個匿名內(nèi)部類,并覆蓋 run() 方法。最后作為參數(shù)傳給Thread的構(gòu)造函數(shù)。

public class Main { public static void main(String[] args) { // 自定義的 Runnable Runnable runnable = new MyRunnable(); Thread thread = new Thread(runnable, 'Runnable-Thread'); thread.start();​ // 自定義匿名內(nèi)部類 new Thread(() -> { System.out.println('Inner class'); }).start(); }​ static class MyRunnable implements Runnable { @Override public void run() { System.out.println('MyRunnable'); } }}

3、 Callable 接口方式

Callable 接口與 Runnable 接口的區(qū)別:

(1)Callable 的方法為call(),Runnable的方法為run()。

(2)Callable 的方法由返回值,Runnable 沒有。

(3)Callable 的方法聲明的Exception,Runnable的沒有。

public class Main { public static void main(String[] args) { MyCallable myCallable = new MyCallable(); FutureTask<String> task = new FutureTask<>(myCallable); Thread thread = new Thread(task, 'FutureTask'); thread.start(); try { // 通過get方法獲取返回值 String result = task.get(); System.out.println(result); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } }​ static class MyCallable implements Callable<String> { @Override public String call() throws Exception { // 模擬超時操作 Thread.sleep(1000); return 'OK'; } }}

4、線程池方式

我們可以通過 ThreadPoolExecutor 類的構(gòu)造函數(shù)來創(chuàng)建線程池,也可以通過Executors工廠方法來創(chuàng)建,如

// 創(chuàng)建固定線程數(shù)的線程池Executors.newFixedThreadPool(); // 創(chuàng)建只有一個核心線程的線程池Executors.newSingleThreadExecutor();// 創(chuàng)建一個沒有核心線程,但可以緩存線程的線程池Executors.newCachedThreadPool();// 創(chuàng)建一個適用于執(zhí)行定時任務(wù)的線程池Executors.newScheduledThreadPool();

在創(chuàng)建線程池時,最好傳入 ThreadFactory 參數(shù),指定線程池所創(chuàng)建線程的名稱。這樣有利于分析定位可能存在的問題。

public class Main { private static final ExecutorService SERVICE = Executors.newFixedThreadPool(5, new BasicThreadFactory('My-Thread'));​ public static void main(String[] args) { // 打印線程的名字 System.out.println('main thread name:' + Thread.currentThread().getName()); SERVICE.execute(() -> { System.out.println('Hello thread pool.'); // 打印線程池里的線程的名字 System.out.println('thread name:' + Thread.currentThread().getName()); }); }​ static class BasicThreadFactory implements ThreadFactory { private final AtomicInteger threadNumber = new AtomicInteger(0); private final String basicName;​ public BasicThreadFactory(String basicName) { this.basicName = basicName; }​ @Override public Thread newThread(Runnable runnable) { Thread thread = new Thread(runnable); String name = this.basicName + '-' + threadNumber.incrementAndGet(); thread.setName(name); return thread; } }}

以上就是java 創(chuàng)建線程的四種方式的詳細內(nèi)容,更多關(guān)于java 創(chuàng)建線程的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 喷砂机厂家_自动喷砂机生产_新瑞自动化喷砂除锈设备 | 水篦子|雨篦子|镀锌格栅雨水篦子|不锈钢排水篦子|地下车库水箅子—安平县云航丝网制品厂 | 四川成人高考_四川成考报名网 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 骨龄仪_骨龄检测仪_儿童骨龄测试仪_品牌生产厂家【品源医疗】 | 粤丰硕水性环氧地坪漆-防静电自流平厂家-环保地坪涂料代理 | 钢结构厂房造价_钢结构厂房预算_轻钢结构厂房_山东三维钢结构公司 | 防锈油-助焊剂-光学玻璃清洗剂-贝塔防锈油生产厂家 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 工控机-工业平板电脑-研华工控机-研越无风扇嵌入式box工控机 | 西安文都考研官网_西安考研辅导班_考研培训机构_西安在职考研培训 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | 定制液氮罐_小型气相液氮罐_自增压液氮罐_班德液氮罐厂家 | 臭氧实验装置_实验室臭氧发生器-北京同林臭氧装置网 | 精密模具加工制造 - 富东懿 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 解放卡车|出口|济南重汽|报价大全|山东三维商贸有限公司 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 混合生育酚_醋酸生育酚粉_琥珀酸生育酚-山东新元素生物科技 | 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 长信科技产业园官网_西安厂房_陕西标准工业厂房 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 3A别墅漆/3A环保漆_广东美涂士建材股份有限公司【官网】 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 上海佳武自动化科技有限公司 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | 电动液压篮球架_圆管地埋式篮球架_移动平箱篮球架-强森体育 | 皮带机_移动皮带机_大倾角皮带机_皮带机厂家 - 新乡市国盛机械设备有限公司 | 东莞海恒试验仪器设备有限公司 | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | 膏剂灌装旋盖机-眼药水灌装生产线-西林瓶粉剂分装机-南通博琅机械科技 | 数显恒温油浴-电砂浴-高温油浴振荡器-常州迈科诺仪器有限公司 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | 编织人生 - 权威手工编织网站,编织爱好者学习毛衣编织的门户网站,织毛衣就上编织人生网-编织人生 | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 |