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

线程创建的几种方式

1.继承Thread类

class MyThread extends Thread {public void run() {// 线程执行的任务for (int i = 0; i < 5; i++) {System.out.println("Thread: " + i);try {Thread.sleep(1000); // 使线程休眠 1 秒} catch (InterruptedException e) {e.printStackTrace();}}}
}public class Main {public static void main(String[] args) {MyThread thread = new MyThread();thread.start(); // 启动线程}
}

2.实现Runnable接口

class MyRunnable implements Runnable {public void run() {// 线程执行的任务for (int i = 0; i < 5; i++) {System.out.println("Runnable: " + i);try {Thread.sleep(1000); // 使线程休眠 1 秒} catch (InterruptedException e) {e.printStackTrace();}}}
}public class Main {public static void main(String[] args) {MyRunnable myRunnable = new MyRunnable();Thread thread = new Thread(myRunnable);thread.start(); // 启动线程}
}

3.实现callable接口

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;public class Main {public static void main(String[] args) {// 创建 Callable 实例Callable<Integer> callable = new MyCallable();// 使用 FutureTask 包装 Callable 实例FutureTask<Integer> futureTask = new FutureTask<>(callable);// 创建线程并启动Thread thread = new Thread(futureTask);thread.start();try {// 获取线程执行结果,这里会阻塞直到线程执行完成并返回结果int result = futureTask.get();System.out.println("Result: " + result);} catch (Exception e) {e.printStackTrace();}}
}// 实现 Callable 接口
class MyCallable implements Callable<Integer> {public Integer call() throws Exception {int sum = 0;for (int i = 1; i <= 10; i++) {sum += i;}return sum;}
}

4.使用匿名内部类

public class Main {public static void main(String[] args) {Runnable myRunnable = new Runnable() {public void run() {// 线程执行的任务for (int i = 0; i < 5; i++) {System.out.println("Anonymous Runnable: " + i);try {Thread.sleep(1000); // 使线程休眠 1 秒} catch (InterruptedException e) {e.printStackTrace();}}}};Thread thread = new Thread(myRunnable);thread.start(); // 启动线程}
}

5.使用Lambda表达式

public class Main {public static void main(String[] args) {Runnable myRunnable = () -> {// 线程执行的任务for (int i = 0; i < 5; i++) {System.out.println("Lambda Runnable: " + i);try {Thread.sleep(1000); // 使线程休眠 1 秒} catch (InterruptedException e) {e.printStackTrace();}}};Thread thread = new Thread(myRunnable);thread.start(); // 启动线程}
}

相关文章:

线程创建的几种方式

1.继承Thread类 class MyThread extends Thread {public void run() {// 线程执行的任务for (int i 0; i < 5; i) {System.out.println("Thread: " i);try {Thread.sleep(1000); // 使线程休眠 1 秒} catch (InterruptedException e) {e.printStackTrace();}}}…...

Python教程:一文掌握Python多线程(很详细)

目录 1.什么是多线程&#xff1f; 1.1多线程与单线程的区别 1.2 Python 中的多线程实现方式 2.使用 threading 模块创建和管理线程 2.1创建线程&#xff1a;Thread 类的基本用法 2.2线程的启动和执行&#xff1a;start() 方法 2.3线程的同步和阻塞&#xff1a;join() 方…...

华为防火墙配置指引超详细(包含安全配置部分)以USG6320为例

华为防火墙USG6320 华为防火墙USG6320是一款高性能、高可靠的下一代防火墙,适用于中小型企业、分支机构等场景。该防火墙支持多种安全功能,可以有效抵御网络攻击,保护网络安全。 目录 华为防火墙USG6320 1. 初始配置 2. 安全策略配置 3. 防火墙功能配置 4. 高可用性配…...

(含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现

原生写法 // 封装组件 import React, { useState, useRef } from react;const DraggableModal ({ children }) > {const [position, setPosition] useState({ x: 0, y: 0 });const modalRef useRef(null);const handleMouseDown (e) > {const modal modalRef.curre…...

选择最佳图像处理工具OpenCV、JAI、ImageJ、Thumbnailator和Graphics2D

文章目录 1、前言2、 图像处理工具效果对比2.1 Graphics2D实现2.2 Thumbnailator实现2.3 ImageJ实现2.4 JAI&#xff08;Java Advanced Imaging&#xff09;实现2.5 OpenCV实现 3、图像处理工具结果 1、前言 SVD(stable video diffusion)开放了图生视频的API&#xff0c;但是限…...

微信小程序版本更新检测

app.vue文件 <script>export default {onLaunch: function() {console.log(App Launch)// #ifdef MP-WEIXINthis.getUpdateManager();// #endif},methods: {// 检测小程序更新getUpdateManager() {const updateManager wx.getUpdateManager();updateManager.onCheckFor…...

【每日力扣】343. 整数拆分与63. 不同路径 II

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害 343. 整数拆分 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使…...

洛谷 Cut Ribbon

思路&#xff1a;我们可以看出&#xff0c;这是一道完全背包问题&#xff0c;但是呢&#xff0c;有一点需要注意&#xff1a;那就是我们在装背包的时候并不能保证一定能装满背包&#xff0c;但是这里的背包要求是让我们装满的&#xff0c;所以我们需要判断这个背包装满才行&…...

#AS,idea,maven,gradle

Jdk,sdk。提前都是需要下好的。 Maven与gradle的思考&#xff1a; 用AS开发app时&#xff0c;gradle本就有&#xff0c;自己也可以指定&#xff0c;AGP同样。要注意gradle&#xff0c;AGP,jdk版本的事情。还有依赖库。 用idea开发网络程序时&#xff0c;也有内置的maven&…...

FPGA结构与片上资源

文章目录 0.总览1.可配置逻辑块CLB1.1 6输入查找表&#xff08;LUT6&#xff09;1.2 选择器&#xff08;MUX&#xff09;1.3 进位链&#xff08;Carry Chain&#xff09;1.4 触发器&#xff08;Flip-Flop&#xff09; 2.可编程I/O单元2.1 I/O物理级2.2 I/O逻辑级 3.布线资源4.其…...

【分布式】——分布式事务

分布式事务 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/tree-learning-notes ⭐⭐⭐⭐⭐⭐ Spring专栏&#x1f449;https://blog.csdn.net/weixin_53580595/category_12279588.html SpringMVC专…...

第6章:“让我们思考这个”的提示

“让我们思考这个”这一提示词&#xff0c;是深度对话的钥匙&#xff0c;鼓励ChatGPT生成反思性、沉思性的文本。 对于论文写作、诗歌创作或创意任务的完成&#xff0c;非常实用。 当你想要深究某主题时&#xff0c;只需向ChatGPT提问。 它会基于提示&#xff0c;结合算法和…...

安卓Activity上滑关闭效果实现

最近在做一个屏保功能&#xff0c;需要支持如图的上滑关闭功能。 因为屏保是可以左右滑动切换的&#xff0c;内部是一个viewpager 做这个效果的时候&#xff0c;关键就是要注意外层拦截触摸事件时&#xff0c;需要有条件的拦截&#xff0c;不能影响到内部viewpager的滑动处理…...

使用conda管理python环境

为什么需要管理环境&#xff1f; 每个python程序依赖的库版本可能不同&#xff0c;因此我们需要隔离不同的环境。 创建环境&#xff1a; conda create --name myenv python3.8这将创建一个名为myenv的新环境&#xff0c;并在其中安装Python 3.8版本。 列出所有环境&#xf…...

MR混合现实情景实训教学系统在军事演练课堂中的教学应用

MR混合现实情景实训教学系统在军事演练课堂中的教学应用具有以下优势&#xff1a; 1. 增强现实感&#xff1a;通过MR技术&#xff0c;学生可以在军事演练中更真实地感受到战场环境&#xff0c;增强他们的实战经验。 2. 提高训练效率&#xff1a;通过MR技术&#xff0c;可以模…...

vant checkbox 复选框 样式改写

修改前 修改后 基于 vant&#xff1a; 4.8.3 unocss: 0.53.4 <van-checkbox-group v-model"query.zczb" shape"square" class"text-16 w-100% flex flex-wrap"><template v-for"item in registerCapitalOption"><v…...

物联网实战--入门篇之(一)物联网概述

目录 一、前言 二、知识梳理 三、项目体验 四、项目分解 一、前言 近几年很多学校开设了物联网专业&#xff0c;但是确却地讲&#xff0c;物联网属于一个领域&#xff0c;包含了很多的专业或者说技能树&#xff0c;例如计算机、电子设计、传感器、单片机、网…...

将yolov5s部署到安卓上实战经验总结

最近需要在手机端实现一个目标检测的功能&#xff0c;于是选择了小巧又在目标检测方面表现很好的yolov5s&#xff0c;官网下载yolov5代码&#xff0c;用自己做的数据集进行了训练&#xff0c;然后把模型转换成torchscript格式&#xff0c;这些过程网上都有很多讲解&#xff0c;…...

算法日记————对顶堆(4道题)

对顶堆的作用主要在于动态维护第k大的数字&#xff0c;考虑使用两个优先队列&#xff0c;一个大9999999999根堆一个小根堆&#xff0c;小根堆维护大于等于第k大的数字的数&#xff0c;它的堆顶就是堆内最小&#xff0c;第k大的数字&#xff0c;另外一个大根堆维护小于等于k的数…...

【I.MX6ULL移植】Ubuntu-base根文件系统移植

1.下载Ubuntu16.04根文件系统 http://cdimage.ubuntu.com/ 1 2 3 4 5 2.解压ubuntu base 根文件系统 为了存放 ubuntu base 根文件系统&#xff0c;先在 PC 的 Ubuntu 系统中的 nfs 目录下创建一个名为 ubuntu_rootfs 的目录&#xff0c;命令如下&#xff1a; 【注意&…...

探索ReoGrid:在.NET应用中构建专业级数据可视化方案的三步法

探索ReoGrid&#xff1a;在.NET应用中构建专业级数据可视化方案的三步法 【免费下载链接】ReoGrid Fast and powerful .NET spreadsheet component, support data format, freeze, outline, formula calculation, chart, script execution and etc. Compatible with Excel 2007…...

BLE心率监测服务开发:从GATT协议到CCCD通知机制的完整实现

1. 项目概述如果你正在开发一款智能手环、心率带或者任何需要实时上报生理数据的可穿戴设备&#xff0c;那么蓝牙低功耗&#xff08;BLE&#xff09;的心率监测服务&#xff08;Heart Rate Service, HRS&#xff09;几乎是你绕不开的核心功能。这个看似标准的服务&#xff0c;其…...

YOLO11涨点优化:数据增强 | 引入AutoAugment自动化搜索增强策略,告别手工调参,挖掘最优数据配方

引言:YOLO11训练,为何你的mAP总是差一口气? 训练一个YOLO11模型并不难——几行Python代码就能跑起来。但真正让人崩溃的是:数据标注花了两周,超参数调了三天,mAP就涨了0.3个点。你反复调整旋转角度、翻转概率、HSV色彩偏移的幅度,试图找到那组“最佳”的组合,却发现自…...

博主介绍以及联系方式获取点我进入

目录博主介绍项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作博主介绍 开发技术范围&#xff1a;uniapp框架,Android,Kotlin框架,koa框架,express框架,go语言,laravel框架,thinkphp框架,springcloud,django,flask框架,SpringBo…...

YOLOX核心创新点深度剖析:从Anchor-Based到Anchor-Free的演进之路

1. YOLOX的诞生背景与技术挑战 记得第一次在GitHub上看到YOLOX开源项目时&#xff0c;我正在调试YOLOv5的检测头。当时业内普遍认为YOLOv5已经是目标检测的"天花板"&#xff0c;但YOLOX团队却用实验数据证明&#xff1a;通过架构层面的创新&#xff0c;模型性能还能再…...

常用命令大全

一、日常工具&#xff08;最常用&#xff09;calc&#xff1a;计算器notepad&#xff1a;记事本mspaint&#xff1a;画图工具osk&#xff1a;屏幕键盘write / wordpad&#xff1a;写字板explorer&#xff1a;文件资源管理器shell:recyclebinfolder&#xff1a;回收站shell:down…...

2026上海徐汇区新高一名师辅导暑假班必看 | 优师授课、直击重点

初升高是上海学生学业关键拐点&#xff0c;徐汇区名校云集、学习节奏快、考点难度高&#xff0c;选对名师辅导&#xff0c;直接决定孩子能否快速适应高中、抓住重点、少走弯路。2026年徐汇家长选新高一名师班&#xff0c;核心看三点&#xff1a;优师背景、授课精准、直击考点&a…...

Zig语言构建工具zcc详解:依赖管理与项目构建实践

1. 项目概述&#xff1a;一个为Zig语言量身打造的构建系统最近在折腾Zig语言项目时&#xff0c;发现了一个挺有意思的工具&#xff1a;git-on-my-level/zcc。乍一看这个名字&#xff0c;可能会让人联想到经典的C编译器gcc&#xff0c;或者猜测它是一个Zig语言的C编译器前端。但…...

深度解析:如何高效实现Android应用级定位模拟的完整方案

深度解析&#xff1a;如何高效实现Android应用级定位模拟的完整方案 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation 在移动应用开发和测试领域&#xff0c;精准控制定位信息是确保…...

一篇看懂 SimGen:它为什么能“同时生成手术图像和分割掩码”?

在医学影像领域&#xff0c;“生成图像”已经不算新鲜事&#xff1b;但在手术场景里&#xff0c;真正有价值的并不只是生成一张“看起来像真的”图&#xff0c;而是同时生成一张能够精确标出器械、组织和解剖区域的分割掩码。因为对手术 AI 来说&#xff0c;最贵的从来不是图片…...