创建线程的方式

简介: 本章讲解了四种创建线程的方式

创建线程有哪几种方式?

  • 通过扩展 Thread 类来创建多线程
  • 通过实现 Runnable 接口来创建多线程
  • 实现 Callable 接口,通过 FutureTask 接口创建线程。
  • 使用 Executor 框架来创建线程池。

继承 Thread 创建线程:

代码如下。run()方法是由jvm创建完操作系统级线程后回调的方法,不可以手动调用,手动调用相当于调用普通方法

publicclassMyThreadextendsThread {
publicMyThread() {
            }
@Overridepublicvoidrun() {
for (inti=0; i<10; i++) {
System.out.println(Thread.currentThread() +":"+i);
                }
            }
publicstaticvoidmain(String[] args) {
MyThreadmThread1=newMyThread();
MyThreadmThread2=newMyThread();
MyThreadmyThread3=newMyThread();
mThread1.start();
mThread2.start();
myThread3.start();
            }
        }

Runnable 创建线程代码:

publicclassRunnableTest {
publicstaticvoidmain(String[] args){
Runnable1r=newRunnable1();
Threadthread=newThread(r);
thread.start();
System.out.println("主线程:["+Thread.currentThread().getName()+"]");
            }
        }
classRunnable1implementsRunnable{
@Overridepublicvoidrun() {
System.out.println("当前线程:"+Thread.currentThread().getName());
            }
        }

实现Runnable接口比继承Thread类所具有的优势:

1. 可以避免java中的单继承的限制

2. 线程池只能放入实现RunableCallable类线程,不能直接放入继承Thread的类

Callable 创建线程代码:

publicclassCallableTest {
publicstaticvoidmain(String[] args) {
Callable1c=newCallable1();
//异步计算的结果FutureTask<Integer>result=newFutureTask<>(c);
newThread(result).start();
try {
//等待任务完成,返回结果intsum=result.get();
System.out.println(sum);
                } catch (InterruptedException|ExecutionExceptione) {
e.printStackTrace();
                }
            }
        }
classCallable1implementsCallable<Integer> {
@OverridepublicIntegercall() throwsException {
intsum=0;
for (inti=0; i<=100; i++) {
sum+=i;
                }
returnsum;
            }
        }

使用 Executor 创建线程代码:

publicclassExecutorsTest {
publicstaticvoidmain(String[] args) {
//获取ExecutorService实例,生产禁用,需要手动创建线程池ExecutorServiceexecutorService=Executors.newCachedThreadPool();
//提交任务executorService.submit(newRunnableDemo());
            }
        }
classRunnableDemoimplementsRunnable {
@Overridepublicvoidrun() {
System.out.println("大彬");
            }
        }


相关文章
|
5月前
|
Linux API 数据安全/隐私保护
OpenClaw跨平台协作全指南:多端同步+自动化工作流+大模型配置+阿里云服务器、本地桌面设备(Windows11/MacOS/Linux)部署实战
2026年,OpenClaw(Clawdbot)的跨平台协作能力已成为核心竞争力之一——用户不再局限于单一设备使用,通过“中心化存储+分布式访问”架构,可在阿里云服务器、本地桌面设备(Windows11/MacOS/Linux)之间实现配置同步、任务接续、数据共享,真正打破设备壁垒。这种“一处部署、多端可用”的协作模式,适配移动办公、多场景切换等现代工作需求,配合多Agent协同与自动化工作流,可大幅提升效率。本文基于最新版本,详细拆解跨平台协作逻辑、全系统部署流程、大模型配置及自动化工作流搭建,所有代码可直接复制执行,助力用户零门槛实现无缝协同。
1664 0
|
Java
Java中的全局变量和局部变量(看这篇就够了)
Java中的全局变量和局部变量(看这篇就够了)
1087 0
|
11月前
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
994 2
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
|
Web App开发 算法 安全
《拆解WebRTC:NAT穿透的探测逻辑与中继方案》
本文深入解析了WebRTC应对NAT穿透的技术体系。NAT因类型多样(完全锥形、受限锥形、端口受限锥形、对称NAT)给端到端通信带来挑战,而WebRTC通过STUN服务器探测公网地址与NAT类型,借助ICE协议规划多路径(本地地址、公网反射地址、中继地址)并验证连接,TURN服务器则作为中继保障通信。文章还探讨了多层NAT、运营商级NAT等复杂场景的应对策略,揭示WebRTC通过探测、协商与中继实现可靠通信的核心逻辑,展现其在网络边界中寻找连接路径的技术智慧。
697 7
|
机器学习/深度学习 人工智能 搜索推荐
PaSa:字节跳动开源学术论文检索智能体,自动调用搜索引擎、浏览相关论文并追踪引文网络
PaSa 是字节跳动推出的基于强化学习的学术论文检索智能体,能够自动调用搜索引擎、阅读论文并追踪引文网络,帮助用户快速获取精准的学术文献。
1343 15
|
NoSQL Redis UED
揭秘!Flask如何携手Celery,让异步任务处理不再是难题,打造极速响应的Web应用新纪元!
【8月更文挑战第31天】在Web开发中,Flask与Celery的结合为异步任务处理提供了强大支持。Flask作为轻量级Web框架,以其简洁灵活著称;而Celery则是一个分布式任务队列系统,擅长处理耗时任务。二者结合,Flask专注于处理Web请求,Celery则在后台异步执行复杂任务,如发送邮件或调用外部API。这种方式不仅提升了应用性能和响应速度,还优化了用户体验。下面的示例展示了如何在Flask应用中集成Celery以实现异步任务处理。
897 0
|
数据可视化 数据挖掘 数据处理
零基础入门金融风控之贷款违约预测的Task2:数据分析
零基础入门金融风控之贷款违约预测的Task2:数据分析
379 1
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
1438 4
|
编解码 人工智能 算法
【AI系统】EfficientNet 系列
本文介绍了EfficientNet系列模型,特别是EfficientNet V1和V2。EfficientNet V1通过NAS技术同时探索网络的宽度、深度和分辨率对模型性能的影响,提出了复合模型缩放方法,以平衡三者关系,实现高效模型扩展。EfficientNet V2在此基础上,引入Fused-MBConv模块,采用渐进式学习策略和自适应正则化技术,进一步提升了模型的训练速度和推理效率。
1606 6
【AI系统】EfficientNet 系列
|
SQL 安全 算法
BugKu CTF(Crypto):Caesar cipher & 抄错的字符 & /.- & 聪明的小羊 & ok
BugKu CTF(Crypto):Caesar cipher & 抄错的字符 & /.- & 聪明的小羊 & ok

热门文章

最新文章