创建线程的四种方法(Java)

news2024/11/20 8:30:18

目录

一、继承 Thread类

二、实现Runnable接口

三、实现Callable接口

四、使用线程池


一、继承 Thread类

创建一个类 Thread 类,并重写run()方法,通过start()启动线程。以继承的方式创建的线程可以使用当前类来获取线程的名称、状态、优先级等相关信息,因为其继承了Thread类的相关方法。

public class MyThread extends Thread{
 
    @Override
    public void run(){
        while(true){
            System.out.println(this.getName());
        }
    }
}

我们写一个main方法来测试:

public class Main {
    public static void main(String[] args) {
        MyThread myThread=new MyThread();
        myThread.start();
    }
}

执行结果:

二、实现Runnable接口

Runnable接口定义了线程要执行的任务,可以在类中实现该接口来创建线程。在实现该接口后,需要创建Thread对象,并将实现了Runnable接口的类的实例作为构造函数参数传递给Thread对象。然后调用start()方法启动线程。

//自定义类实现Runnable接口
public class RunnableTest implements Runnable{
    @Override
    public void run(){
        System.out.println("你好");
    }
}

我们写一个main方法来测试:

public class Main {
    public static void main(String[] args) {
        RunnableTest runnableTest=new RunnableTest();
        Thread thread=new Thread(runnableTest);
        thread.start();
    }
}

运行结果:

三、实现Callable接口

Callable接口与Runnable接口类似,但是Callable接口的call()方法可以返回执行结果。在实现Callable接口后,需要使用ExecutorService来启动线程,ExecutorService.submit()方法可以启动Callable线程,并返回Future对象,可以使用该对象获取线程执行的结果。

public class MyCallable implements Callable<Integer> {
    public Integer call() {
        // 线程要执行的任务
        return result;
    }
}

MyCallable c = new MyCallable();
ExecutorService executorService = Executors.newCachedThreadPool();
Future<Integer> result = executorService.submit(c);
 

四、使用线程池

线程池是一种管理和复用线程的机制,它可以在应用程序中创建一组可重用线程,线程池中的线程可以重复使用,从而避免了频繁创建和销毁线程带来的性能问题。使用线程池可以在需要执行任务时,直接从线程池中取出空闲线程来执行任务。

public class RunnableTest implements Runnable{
    @Override
    public void run(){
        System.out.println("你好");
    }
}


ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0; i < 10; i++) {
    Runnable worker = new RunnableTest();
    executorService.execute(worker);
}
executorService.shutdown();
while (!executorService.isTerminated()) {
    // 等待所有任务完成
}

关于线程池的几种实现方法,我会在写在下一篇博客噢,希望大家多多支持噢🤗

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1109298.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PXIE板卡,4口QSFP+,PCIE GEN3 X8,XILINX FPGA XCVU3P设计

PXIE板卡&#xff0c;4口QSFP&#xff0c;PCIE GEN3 X8&#xff0c;基于XILINX FPGA XCVU3P设计。 1&#xff1a;电路拓扑 ● 支持利用 EEPROM 存储数据&#xff1b; ● 电源时序控制和总功耗监控&#xff1b; 2&#xff1a;电路调试 3&#xff1a;测试 PCIE gen3 x8&#…

通讯协议学习之路:SPI协议理论

通讯协议之路主要分为两部分&#xff0c;第一部分从理论上面讲解各类协议的通讯原理以及通讯格式&#xff0c;第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN&#xff1b;视频会发布在bilibili(UID:399951374) 序、…

同一网段内两台电脑ping不通,诡异问题记录

今天发现了个诡异的问题&#xff0c;和锐捷技术倒腾了半天&#xff0c;记录一下。 症状&#xff1a; 如图&#xff08;简单画了下&#xff09;&#xff0c;pc1 到 网络打印机 10.64.253.184 &#xff0c;就是ping不通... 但是在交换机上&#xff0c;在路由器上&#xff0c;在…

企业数据安全组织建设

PS:内容均为个人学习及实践积累所得&#xff01; 前言&&背景 企业数据安全组织团队的建设非常重要。 首先,数据是企业最重要的资产和核心竞争力。如果数据泄露或遭到破坏,将直接威胁企业的生存。因此,数据安全事关企业的生存和发展。建立专业的数据安全团队,可以系统…

多云系列|10个关键的多云战略:云计算成本的完整可视性

了解和控制你的云计算支出是每个企业都会遇到的一个难题。根据IDC最近的一项研究&#xff0c;IT决策者面临的首要挑战之一是控制云计算成本。对于大多数企业来说&#xff0c;问题在于他们所有的云资源没有完全的可视性。这可能是由于其他部门绕过IT部门为其开发项目进行支出&am…

论坛介绍|COSCon'23 区块链(B)

众多开源爱好者翘首期盼的开源盛会&#xff1a;第八届中国开源年会&#xff08;COSCon23&#xff09;将于10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01;各位新老朋友们&#xff0c;欢迎到成都&am…

【论文复现】基于多模态深度学习方法的单细胞多组学数据聚类(【生物信息学】实验二:多组学数据融合:scMDC)

目录 一、实验介绍 1. 论文&#xff1a;基于多模态深度学习方法的单细胞多组学数据聚类 Abstract 2. Github链接 二、实验环境 0. 作者要求 1. 环境复现 实验一 实验二&#xff08;本实验&#xff09; 2. 库版本介绍 实验一 实验二 3. IDE 三、实验内容 1. 用法…

Linux高性能服务器编程——ch4笔记

第4章 TCP/IP 通信案例&#xff1a;访问 Internet 上的Web 服务器 4.1 实例总图 4.2 部署代理服务器 客户端和目标服务器之间可能存在多个代理服务器。 正向代理&#xff1a;要求客户端自己设置代理服务器的地址。 反向代理&#xff1a;设置在服务器端。 透明代理&#xff1…

JavaScript从入门到精通系列第二十一篇:JavaScript中的原型对象详解

文章目录 前言 一&#xff1a;原型对象 1&#xff1a;什么是原型对象 2&#xff1a;原型对象的作用 3&#xff1a;通过原型对象实现工厂方法 二&#xff1a;原型对象咋说 1&#xff1a;in和原型对象 2&#xff1a;hasOwnProperty()函数 3&#xff1a;hasOwnProperty()来…

armbian安装gcc、g++

文章目录 安装GCC安装G 安装GCC 打开终端&#xff0c;更新软件包列表&#xff1a; sudo apt update安装GCC&#xff1a; sudo apt install gcc如果需要安装特定版本的GCC&#xff0c;可以使用以下命令&#xff1a; sudo apt install gcc-<version> # sudo apt install g…

苹果手机怎么查找对方手机位置?学会这2个方法足够了!

查找功能是什么&#xff1f;相信使用苹果手机的用户都不陌生。苹果手机的查找功能可以帮助您精准定位设备的位置。当您的手机丢失且无法找回时&#xff0c;那么查找功能就可以发挥它的用处了。 定位自己的手机&#xff0c;大家都知道怎么做。那么&#xff0c;苹果手机怎么查找…

关于opencv的contourArea计算方法

cv::contourArea计算的轮廓面积并不等于轮廓点计数&#xff0c;原因是cv::contourArea是基于Green公式计算 老外的讨论 github 举一个直观的例子&#xff0c;图中有7个像素&#xff0c;橙色为轮廓点连线&#xff0c;按照contourArea的定义&#xff0c;轮廓的面积为橙色所包围…

如何调整模型缩放比例

1、缩放模型的几种方法 在3D建模软件中&#xff0c;通常有几种方式可以缩放模型。以下是两种常见的方法&#xff1a; 使用缩放工具&#xff1a;大多数3D建模软件都提供了缩放工具&#xff0c;可以通过选择模型并使用该工具来进行缩放。通常&#xff0c;您可以在工具栏或菜单中…

vivado 脚本使用——loogarch指令集 实验exp6

首先从Window-tcl console 调出终端 然后执行进入指定目录 也就是run_vivado 目录 然后打开Tools——Run Tcl script&#xff0c;执行create_project.tcl文件&#xff0c;静待完成。

1、Flowable基础

Flowable是BPMN的一个基于java的软件实现&#xff0c;不过Flowable不仅仅包括BPMN&#xff0c;还有DMN决策表和CMMN Case管理引擎&#xff0c;并且有自己的用户管理、微服务API等一系列功能&#xff0c;是一个服务平台。 官方手册&#xff1a;https://tkjohn.github.io/flowab…

21款奔驰GLS400升级小柏林音响 无损音质 无损安装

小柏林之声音响是13个喇叭1个功放&#xff0c;功率是590W&#xff0c;对应普通音响来说&#xff0c;已经是上等了。像著名的哈曼卡顿音响&#xff0c;还是丹拿音响&#xff0c;或者是BOSE音响&#xff0c;论地位&#xff0c;论音质柏林之声也是名列前茅。 升级小柏林音响&…

2023年8月PMP考试成绩出炉|微思通过率95%以上

热烈祝贺一大波微思学员通过 PMP 认证考试 PMP 认证课程介绍 部分学员成绩单 PMP课程涵盖了项目整合管理、项目范围管理、项目进度管理、项目资源管理、项目采购管理等内容。 国际注册项目管理师(PMP) 证书是项目管理领域含金量最高的职业资格证书&#xff0c;获得该资质是…

oracle 表空间详解以及配置操作

Oracle 数据库是由若干个表空间构成的。任何数据库对象在存储时都必须存储在某个 表空间中。表空间对应于若干个数据文件&#xff0c;即表空间是由一个或多个数据文件构成的。 1、常用表空间&#xff1a; 系统表空间 (system tablespace) 是每个 Oracle 数据库都必须具备的。…

抖音小程序制作源码系统 带完整搭建教程

在当今社交媒体时代&#xff0c;抖音作为一款备受欢迎的短视频应用&#xff0c;已经拥有了庞大的用户群体。与此同时&#xff0c;抖音小程序也成为了商家和开发者们关注的热点。今天小编就来给大家介绍一款抖音小程序制作源码系统&#xff0c;五分钟确实创建一个小程序。 系统特…

3D教程 | 在3D可视化引擎HOOPS Visualize中如何调整场景灯光亮度

在HOOPS Visualize场景中使用远光时&#xff0c;您可能需要调整亮度&#xff0c;并在最暗和最亮的面孔之间获得更好的对比度。 HOOPS中文网查HOOPS中文网查 太亮了 将模型的镜面反射值更改为灰色以降低亮度&#xff0c;或更改为黑色以消除面上的火花&#xff1a; ModelKey.Ge…