当前位置: 首页 > news >正文

多线程学习篇一:启动多线程的三种方式

1. 继承 Thread

@Slf4j
public class MyThread extends Thread {@Overridepublic void run() {log.info("MyThread run ...");}public static void main(String[] args) {MyThread myThread = new MyThread();myThread.start();}
}

2. 实现 Runnable 接口

@Slf4j
public class MyRunnable implements Runnable {@Overridepublic void run() {log.info("MyRunnable run...");}public static void main(String[] args) {Thread thread = new Thread(new MyRunnable());thread.start();}
}

3. 实现 Callable 接口

演示 1~100 的累加

@Slf4j
public class MyCallable implements Callable<Integer> {@Overridepublic Integer call() throws Exception {return IntStream.rangeClosed(0, 100).boxed().reduce(Integer::sum).orElse(0);}public static void main(String[] args) throws Exception {FutureTask<Integer> futureTask = new FutureTask<>(new MyCallable());Thread thread = new Thread(futureTask);thread.start();Integer total = futureTask.get();log.info("合计金额:" + total);}
}

4. 继承 Thread 类和实现 Runnable 接口的区别

4.1 Thread 的构造方法

入参为 Runable 的构造方法会将传入的 Runable 赋值给 Thread 的 target 属性

4.2 Thread 的 run 方法

Thread 的 run 方法判断其 target 属性是不是为 null,如果不为 null 则调用 target 方法

4.2 小结
  • 继承 Thread 类:线程调用的是子类重写的 run 方法
  • 实现 Runable 接口:线程调用的是Thread 的 run 方法

5. 实现 Callable 接口与其他两种方式的区别

Callable + FutureTask 的组合形式有返回值,也可以指定等待时间,其它两种方式没有返回值

相关文章:

多线程学习篇一:启动多线程的三种方式

1. 继承 Thread 类 Slf4j public class MyThread extends Thread {Overridepublic void run() {log.info("MyThread run ...");}public static void main(String[] args) {MyThread myThread new MyThread();myThread.start();} } 2. 实现 Runnable 接口 Slf4j pu…...

【专题】2024跨境出海供应链洞察-更先进供应链报告合集PDF分享(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p37665 当前&#xff0c;全球化商业浪潮促使跨境电商行业飞速发展&#xff0c;产业带与跨境电商接轨、平台半托管模式涌现、社交电商带来红利机会以及海外仓不断扩张&#xff0c;这使得产业带外贸工厂、内贸工厂、传统进出口企业和品…...

git submodule

git submodule 是 Git 提供的一种功能&#xff0c;用于在一个 Git 仓库中嵌套另一个 Git 仓库。它可以帮助管理和跟踪外部项目或依赖项&#xff0c;特别是在以下场景中非常有用&#xff1a; 1. 管理外部依赖 当你的项目依赖于其他外部项目或库时&#xff0c;可以使用 git sub…...

【Power Compiler手册】13.UPF多电压设计实现(3)

创建供电端口 要创建电源和地端口,请使用`create_supply_port`命令。 供电端口的名称应该是一个简单的(非层次化的)名称,并且在其定义的层次级别上是唯一的。除非指定了`-domain`选项,否则端口是在当前作用域或层次级别创建的,当前作用域中的所有电源域都可以使用创建的…...

RTX 4090 系列即将停产,RTX 5090 系列蓄势待发

据最新消息&#xff0c;英伟达将于今年10月正式终结其GeForce RTX 4090及RTX 4090D两款旗舰级显卡的生产线。根据行业媒体报道&#xff0c;英伟达及其合作厂商将从下个月开始全面停止这两款显卡的制造。 自2022年10月问世以来&#xff0c;GeForce RTX 4090凭借其无与伦比的GPU…...

【MySQL】使用C语言连接数据库

看到标题&#xff0c;可能会疑惑&#xff0c;我们学习的不是C吗&#xff0c;为什么使用C语言去连接数据库呢??实际上&#xff0c;这两种语言都可以连接数据库&#xff0c;但是C语言提供的API没有进行封装&#xff0c;更有利于我们学习数据库连接。面向API编程&#xff0c;哈哈…...

Vue学习记录之四(watch侦听器和watchEffect高级侦听器)

watch watch 用于侦听特定的响应式数据源&#xff08;如数据、计算属性等&#xff09;&#xff0c;比如ref或者是reactive时&#xff0c;并在其变化时执行回调函数。它适合用于处理副作用&#xff0c;如 API 请求或异步操作。使用 watch 适合特定数据变化的侦听&#xff0c;提…...

RedisTemplate操作ZSet的API

文章目录 ⛄概述⛄常见命令有⛄RedisTemplate API❄️❄️ 向集合中插入元素&#xff0c;并设置分数❄️❄️向集合中插入多个元素,并设置分数❄️❄️按照排名先后(从小到大)打印指定区间内的元素, -1为打印全部❄️❄️获得指定元素的分数❄️❄️返回集合内的成员个数❄️❄…...

Android 15 正式发布至 AOSP

Google官方宣布&#xff0c;将于近期发布了 Android 15&#xff0c;而在早些时候&#xff0c;Google已经将其源代码推送至 Android 开源项目 (AOSP)。未来几周内&#xff0c;Android 15 将在受支持的 Pixel 设备上正式推出&#xff0c;并将于今年晚些时候在三星、Honor、iQOO、…...

IEEE Electronic Library(IEL)数据库文献检索下载介绍及个人获取IEEE文献途径

一、数据库介绍 IEEE&#xff08;The Institute of Electrical and Electronics Engineers&#xff0c;电气电子工程师学会&#xff09;是目前全球最大的非营利性专业技术学会&#xff0c;在全球160多个国家拥有超过45万名会员。IEEE在电气电子、计算机、半导体、通讯、电力能…...

动手学习RAG:大模型重排模型 bge-reranker-v2-gemma微调

动手学习RAG: 向量模型动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习动手学习RAG&#xff1a;rerank模型微调实践 bge-reranker-v2-m3动手学习RAG&#xff1a;迟交互模型colbert微调实践 bge-m3动手学习RAG: 大模型向量模型微调 intfloat/e5-mistral-7b-instruct动手学…...

蓝桥杯2024省C

P10898 [蓝桥杯 2024 省 C] 拼正方形 题目描述 小蓝正在玩拼图游戏&#xff0c;他有 7385137888721个 22的方块和 10470245 个 11 的方块&#xff0c;他需要从中挑出一些来拼出一个正方形&#xff0c;比如用 3 个 22 和 4 个 11 的方块可以拼出一个 44 的正方形&#xff0c;用…...

C++:内部类,匿名对象,操作符new与delete

一.内部类 1.如果一个类定义在另一个类的内部&#xff0c;这个内部类就叫做内部类。内部类是一个独立的类&#xff0c;跟定义在全局相比&#xff0c;他只是受外部类类域限制和访问限定符限制&#xff0c;所以外部类定义的对象中不包含内部类。 2.内部类默认是外部类的友元类。…...

【数据结构】排序算法---计数排序

文章目录 1. 定义2. 算法步骤3. 动图演示4. 性质5. 算法分析6. 代码实现C语言PythonJavaGo 结语 1. 定义 计数排序又称为鸽巢原理&#xff0c;是对哈希直接定址法的变形应用。计数排序不是基于比较的排序算法&#xff0c;其核心在于将输入的数据值转化为键存储在额外开辟的数组…...

mysql时间日期函数、获取当前日期和时间、日期和时间格式化、提取日期部分、日期和时间的算术操作、其他日期函数、日期和时间的比较、日期字符串转换

获取当前日期和时间 NOW()&#xff1a;返回当前的日期和时间。CURDATE()&#xff1a;返回当前的日期。CURTIME()&#xff1a;返回当前的时间。 SELECT NOW(), CURDATE(), CURTIME(); 日期和时间格式化 DATE_FORMAT(date, format)&#xff1a;根据指定的格式字符串格式化日期…...

Android开发高频面试题之——kotlin篇

Android开发高频面试题之——kotlin篇 Android开发高频面试题之——Java基础篇 Android开发高频面试题之——Kotlin基础篇 Android开发高频面试题之——Android基础篇 1. Kotlin如何实现空安全的? Kotlin 将变量划分为可空和不可空,通过查看字节码可知,声明不可空的变量会…...

8--SpringBoot原理分析、注解-详解(面试高频提问点)

目录 SpringBootApplication 1.元注解 --->元注解 Target Retention Documented Inherited 2.SpringBootConfiguration Configuration Component Indexed 3.EnableAutoConfiguration&#xff08;自动配置核心注解&#xff09; 4.ComponentScan Conditional Co…...

语言的枚举

不同语言的枚举 C/C枚举本质是整型&#xff0c;在Java中是对象&#xff0c;而非基本类型&#xff0c;可通过instanceof Object判断是否是对象类型。C#与Java不同&#xff0c;枚举是值类型。C语言更纯粹&#xff0c;枚举绝对当成整数&#xff0c;可以对枚举变量用整数赋值&…...

C# Redis 框架开发技术详解

引言 Redis 是一个高性能的键值存储系统&#xff0c;广泛用于缓存、消息队列和实时分析等场景。在 C# 中&#xff0c;有几个著名的库和框架可以方便地与 Redis 进行交互。以下是几个常用的 C# Redis 库&#xff1a; StackExchange.Redis: 这是目前最流行、最推荐的 C# Redis 客…...

Rust:Result 和 Error

在 Rust 编程语言中&#xff0c;错误处理是一个核心部分&#xff0c;用于确保程序的健売性和可靠性。Rust 通过 Result 枚举和 Error 特质&#xff08;trait&#xff09;来处理错误。 Result 枚举 Result 是一个泛型枚举&#xff0c;用于表示一个操作可能成功或失败。它有两个…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...