Java创建线程的方式

继承Thread类

        这是创建线程的基本方式之一。你需要创建一个新的类,该类继承自Thread类,并重写run()方法。然后,你可以创建这个类的一个实例并调用它的start()方法来启动新线程。

public class MyThread extends Thread { @Override public void run() { // 线程执行的代码 System.out.println("MyThread is running"); } public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); // 启动线程 } 
}

 实现Runnable接口

        这种方式比继承Thread类更加灵活,因为Java不支持多重继承,但可以实现多个接口。你需要创建一个类实现Runnable接口,并重写run()方法。然后,你可以将这个类的实例作为参数传递给Thread类的构造函数来创建线程。

public class MyRunnable implements Runnable {  @Override  public void run() {  // 线程执行的代码  System.out.println("MyRunnable is running");  }  public static void main(String[] args) {  Thread thread = new Thread(new MyRunnable());  thread.start(); // 启动线程  }  
}

实现Callable接口 

Callable接口类似于Runnable接口,但它可以返回一个结果并可能抛出异常。Future接口用于获取Callable任务的结果。通常,我们使用FutureTask类,它实现了FutureRunnable接口,因此可以作为Thread的目标来运行。

public class MyCallable implements Callable<String> {  @Override  public String call() throws Exception {  // 线程执行的代码  return "MyCallable result";  }  public static void main(String[] args) throws ExecutionException, InterruptedException {  ExecutorService executor = Executors.newSingleThreadExecutor();  Future<String> future = executor.submit(new MyCallable());  String result = future.get(); // 获取结果  System.out.println(result);  executor.shutdown(); // 关闭执行器  }  
}

线程池

线程池是一种更高级的用法,它可以管理和复用线程,以减少创建和销毁线程的开销。Java提供了多种线程池实现,如FixedThreadPoolCachedThreadPool等。你可以使用Executors工厂类来创建线程池。

ExecutorService executor = Executors.newFixedThreadPool(10); // 创建一个固定大小的线程池  
executor.submit(new MyRunnable()); // 提交任务给线程池  
executor.shutdown(); // 关闭线程池

请注意,当你使用线程池时,你应该在适当的时候关闭它,以避免资源泄漏。通常,在提交完所有任务后,你应该调用shutdown()shutdownNow()方法来关闭线程池。

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

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

相关文章

Ubuntu 移除netplan

Ubuntu 移除netplan 鉴于netplan现在还不成熟&#xff0c;桌面版还是NetworkManager的天下&#xff0c;故移除之。 云服务器用netplan的多(深度学习租卡一般docker不用考虑) 仅限于你能物理上直接使用Ubuntu&#xff0c;云服务器谨慎操作&#xff01;&#xff01;&#xff01…

我的创作纪念日(1825天)

Ⅰ、机缘 1. 记得是大一、大二的时候就听学校的大牛说&#xff0c;可以通过写 CSDN 博客&#xff0c;来提升自己的代码和逻辑能力&#xff0c;虽然即将到了写作的第六个年头&#xff0c;但感觉这句话依旧受用; 2、今年一整年的创作都没有停止&#xff0c;本年度几乎是每周都来…

UniApp或微信小程序中scroll-view组件使用show-scrollbar在真机Android或IOS中隐藏不了滚动条的解决办法

show-scrollbar 属性 不论是使用 变量 还是直接使用 布尔值或者直接使用 css 都是在 ios、Android 上是都没有效果。。 真机中还是出现滚动条 解决办法 添加下面CSS ::-webkit-scrollbar {display: none;width: 0 !important;height: 0 !important;-webkit-appearance: no…

盛世古董乱世金-数据库稳定到底好不好?

是不是觉得这个还用问&#xff1f; 是的要问。因为这个还是一个有争议的问题。但是争议双方都没有错。这就像辩论&#xff0c;有正反双方。大家都说的有道理&#xff0c;但是很难说谁对谁错。 正方观点&#xff1a;数据库稳定好 其实这个是用户的观点&#xff0c;应用开发人…

17个关键方法指南,保护您的web站点安全!

了解如何让您的web应用程序或网站安全&#xff0c;对于网站所有者来说至关重要。以下是一些关键步骤&#xff0c;可以帮助您保护网站免受攻击和数据泄露。 1.使用公钥加密技术 当数据以明文形式传输时&#xff0c;它容易受到中间人 &#xff08;MitM&#xff09; 攻击。这意味…

北航第六次数据结构与程序设计作业(查找与排序)选填题

一、 顺序查找的平均查找长度ASL&#xff08;1 2 …… n&#xff09;/ n (n 1&#xff09;/ 2 二、 这半查找法的平均查找次数和判定树的深度有关系。若查找一个不存在的元素&#xff0c;说明进行了深度次比较。 注意&#xff0c;判定树不是满二叉树&#xff0c;因此深…

安卓网络通信(多线程、HTTP访问、图片加载、即时通信)

本章介绍App开发常用的以下网络通信技术&#xff0c;主要包括&#xff1a;如何以官方推荐的方式使用多线程技术&#xff0c;如何通过okhttp实现常见的HTTP接口访问操作&#xff0c;如何使用Dlide框架加载网络图片&#xff0c;如何分别运用SocketIO和WebSocket实现及时通信功能等…

HTTP协议 快速入门

http概述 无状态性&#xff1a;HTTP是一个无状态协议&#xff0c;这意味着服务器不会在请求之间保存任何会话信息。每个请求都是独立的&#xff0c;服务器不会记住之前的请求。 请求-响应模型&#xff1a;HTTP通信是基于客户端发送请求和服务器返回响应的模型。客户端&#xf…

程序员入职一家新的公司的注意事项

1.心态 我把心态放在了第一位&#xff0c;是因为&#xff0c;良好的心态是成功的关键&#xff0c;刚入职一家公司&#xff0c;领导给你一个老破旧的项目&#xff0c;不要着急&#xff0c;你能把项目中的问题很好的解决了就是你的本事&#xff0c;我碰到过很多这样的情况&#…

Spark常见的可以优化的点

Shuffle 复用 # 1.以下操作会复用的shuffle结果&#xff0c;只会读一遍数据源 val rdd1 sc.textFile("hdfs://zjyprc-hadoop/tmp/hive-site.xml").flatMap(_.split(" ")).map(x > (x,1)).reduceByKey(_ _).filter(_._2 > 1) rdd1.count() rdd1.fil…

华为od-C卷200分题目2 - 找城市

华为od-C卷200分题目2 - 找城市 题目描述 一个城市规划问题&#xff0c;一个地图有很多城市&#xff0c;两个城市之间只有一种路径&#xff0c;切断通往一 个城市i的所有路径之后&#xff0c;其他的城市形成了独立的城市群&#xff0c;这些城市群里最大的城 市数量&#xff0…

JavaFX 场景

JavaFX场景对象是 JavaFX 场景图的根。换句话说&#xff0c;JavaFX 场景包含其中的所有可视 JavaFX GUI 组件。JavaFX 场景由类表示 javafx.scene.Scene。必须在JavaFX StageScene上设置对象 才能可见。在本 JavaFX教程中&#xff0c;我将向您展示如何创建 对象并向其添加 GUI …

什么是中断?STM32F407中断处理

什么是中断&#xff1f; 中断&#xff08;Interrupt&#xff09;是一种处理器处理异步事件的方法。当某个事件&#xff08;如外部设备的信号、定时器溢出等&#xff09;发生时&#xff0c;处理器可以暂停当前正在执行的任务&#xff0c;去处理这个事件&#xff0c;然后再返回继…

会声会影色彩校正在哪里 会声会影色彩素材栏在哪 会声会影中文免费版下载

会声会影是一款功能强大的视频编辑软件&#xff0c;它可以帮助用户轻松地编辑和制作视频。在进行视频编辑时&#xff0c;色彩校正是一个重要的步骤&#xff0c;它可以调整视频的色调、亮度和对比度等参数&#xff0c;使视频更加生动和鲜明。在会声会影中&#xff0c;色彩校正功…

使用shell脚本在Linux中管理Java应用程序

文章目录 前言一、目录结构二、脚本实现1. 脚本内容2. 使用说明2.1 配置脚本2.2 脚本部署2.3 操作你的Java应用 总结 前言 在日常开发和运维工作中&#xff0c;管理基于Java的应用程序是一项基础且频繁的任务。本文将通过一个示例脚本&#xff0c;展示如何利用Shell脚本简化这…

【Python/Pytorch - 网络模型】-- TV Loss损失函数

文章目录 文章目录 00 写在前面01 基于Pytorch版本的TV Loss代码02 论文下载 00 写在前面 在医学图像重建过程中&#xff0c;经常在代价方程中加入TV 正则项&#xff0c;该正则项作为去噪项&#xff0c;对于重建可以起到很大帮助作用。但是对于一些纹理细节要求较高的任务&am…

期权无风险套利(Risk-Free Arbitrage)举例以及期权无套利定价公式

期权市场的无风险套利 中文版 期权市场中的套利实例 为了清楚地说明&#xff0c;让我们通过一个现实的例子来展示套利。 期权市场中的套利实例 假设市场上有以下价格&#xff1a; 标的股票价格&#xff1a;100美元欧式看涨期权&#xff08;行权价100美元&#xff0c;3个月…

MySQL 保姆级教程(六):用通配符进行过滤

第 8 章 用通配符进行过滤 8.1 LIKE 操作符 通配符: 用来匹配值的一部分的特殊字符 搜索模式: 由字面值、通配符或两者组合构成的搜索条件 为了在搜索子句中使用通配符&#xff0c;必须使用 LIKE 操作符 8.1.1 百分号&#xff08;%&#xff09;通配符 输入: SELECT server_…

MongoDB~分片数据存储Chunk;其迁移原理、影响,以及避免手段

分片数据存储&#xff1a;Chunk存储 Chunk&#xff08;块&#xff09; 是 MongoDB 分片集群的一个核心概念&#xff0c;其本质上就是由一组 Document 组成的逻辑数据单元。每个 Chunk 包含一定范围片键的数据&#xff0c;互不相交且并集为全部数据。 分片集群不会记录每条数据…

Python 基础:类

目录 一、类的概念二、定义类三、创建对象并进行访问四、修改属性的值方法一&#xff1a;句点表示法直接访问并修改方法二&#xff1a;通过方法进行修改 五、继承继承父类属性和方法重写父类方法 六、将实例用作属性七、导入类导入单个类从一个模块中导入多个类导入整个模块导入…