java创建线程的3种方式

方法一,直接使用 Thread

import lombok.extern.slf4j.Slf4j;@Slf4j(topic = "c.Test1")
public class Test1CreateThread {public static void main(String[] args) {Thread t = new Thread(){@Override// run 方法内实现了要执行的任务public void run() {log.debug("hello");}};t.setName("t1");t.start();log.debug("hi");}
}

方法二,使用 Runnable 配合 Thread
把【线程】和【任务】(要执行的代码)分开
● Thread 代表线程
● Runnable 可运行的任务(线程要执行的代码)

import lombok.extern.slf4j.Slf4j;@Slf4j(topic = "c.Test1")
public class Test2CreateThread {public static void main(String[] args) {Runnable runnable = new Runnable() {public void run(){// 要执行的任务log.debug("aaaa");}};// 创建线程对象Thread t = new Thread( runnable,"threadName");// 启动线程t.start();}
}

小结
● 方法1 是把线程和任务合并在了一起,方法2 是把线程和任务分开了
● 用 Runnable 更容易与线程池等高级 API 配合
● 用 Runnable 让任务类脱离了 Thread 继承体系,更灵活

方法三,FutureTask 配合 Thread

import lombok.extern.slf4j.Slf4j;import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;@Slf4j(topic = "c.Test1")
public class Test3CreateThread {public static void main(String[] args) throws ExecutionException, InterruptedException {FutureTask<Integer> task = new FutureTask<>(()->{log.debug("hello");return 100;});new Thread(task,"t3").start();Integer result = task.get();log.debug("结果是{}",result);}
}

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

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

相关文章

探索程序员需要掌握的算法?

文章目录 一&#xff1a;引言二&#xff1a;常见算法介绍三&#xff1a;重点算法总结 &#x1f389;欢迎来到数据结构学习专栏~探索程序员需要掌握的算法&#xff1f; ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章…

【大数据Hive】hive 加载数据常用方案使用详解

目录 一、前言 二、load 命令使用 2.1 load 概述 2.1.1 load 语法规则 2.1.2 load语法规则重要参数说明 2.2 load 数据加载操作演示 2.2.1 前置准备 2.2.2 加载本地数据 2.2.3 HDFS加载数据 2.2.4 从HDFS加载数据到分区表中并指定分区 2.3 hive3.0 load 命令新特性 …

解决SVN文件不显示绿色小钩图标问题

问题描述&#xff1a; 今天重新安装了SVN&#xff0c;发现从中央服务器拉取文件到本地仓库后&#xff0c;对应的文件没有绿色的小钩图标&#xff0c;于是查了一下解决方案&#xff0c;在这里总结一下。 解决方案一&#xff1a; 原因&#xff1a;状态缓存设置问题造成的。 在…

【数据结构】树的基础知识及三种存储结构

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

【C++基础】lambda表达式

这个其实在QT中经常用到&#xff0c;但是之前自己学习的时候也是一知半解的&#xff0c;没有彻底的搞明白&#xff0c;在这里&#xff0c;做一个整理 文章参考&#xff1a;Lambda表达式 | 爱编程的大丙 lambda表达式定义了一个匿名函数&#xff0c;并且可以捕获一定范围内的变…

1143. 最长公共子序列 -- 动规

1143. 最长公共子序列 class LongestCommonSubsequence2:"""1143. 最长公共子序列https://leetcode.cn/problems/longest-common-subsequence/"""def solution(self, text1: str, text2: str) -> int:"""递归解法 备忘录自顶…

【SG滤波】三阶滤波、五阶滤波、七阶滤波(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

linux grep操作汇总

汇总起来&#xff0c;备忘查看&#xff01; 目录 1&#xff0c;找指定文本 2&#xff0c;查找时不区分大小写 3&#xff0c;在指定命令下递归查找 4&#xff0c;查找时显示字符串在文件中的行号 5&#xff0c;取反&#xff1a;找出文件中不包含指定内容的数据行 6&#x…

JDBC连接串配置JDBC日志(DM8:达梦数据库)

DM8:达梦数据库JDBC连接串配置JDBC日志 环境介绍1 Windows 环境程序配置2 Linux 环境程序配置 环境介绍 在某些环境&#xff0c;需要开启JDBC日志&#xff0c;用于分析业务系统连接数据库遇到的异常问题配置JDBC日志后&#xff0c;程序重启生效 1 Windows 环境程序配置 jdbc…

【C++】AVL树的插入操作实现以及验证是否正确(带平衡因子)

文章目录 前言一、AVL树结点的定义二、AVL树的插入&#xff08;Insert&#xff09;插入完整代码&#xff1a;1.左单旋&#xff08;RotateL&#xff09;2.右单旋&#xff08;RotateR&#xff09;3.先右单旋再左单旋&#xff08;RotateRL&#xff09;1.保存的bf为02.保存的bf为13…

Excel中将文本格式的数值转换为数字

在使用excel时&#xff0c;有时需要对数字列进行各种计算&#xff0c;比如求平均值&#xff0c;我们都知道应该使用AVERAGE()函数&#xff0c;但是很多时候结果却“不尽如人意”。 1 问题&#xff1a; 使用AVERAGE函数&#xff1a; 结果&#xff1a; 可以看到单元格左上角有个…

docker 方式安装mysql 主从方式keepalived实现高可用

一、环境介绍 二、MySQL安装 在两台服务器上都安装mysql 1、拉取镜像 docker pull mysql:8.0.272、创建挂载目录 mkdir -p /data/mysql/3、运行容器 主节点 docker run \--restartalways \--name master_mysql -p 3306:3306 \-e MYSQL_ROOT_PASSWORD123456 -d \-v /data/m…

基于视觉重定位的室内AR导航APP的大创项目思路(3)手机相机内参数据获取和相机标定

文章目录 相机内参为什么要获取相机的内参数据&#xff1a;获取相机内存数据的方法棋盘格标定自动相机标定 前情提要&#xff1a; 是第一次做项目的小白&#xff0c;文章内的资料介绍如有错误&#xff0c;请多包含&#xff01; 相机内参 相机内参是本身的物理数据&#xff0c…

HTTP RESTFul RPC

一、简介 &#xff08;1&#xff09;HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是一种应用层协议。它经常用于在Web和服务器之间通讯&#xff0c;或服务与服务之间通讯。 &#xff08;2&#xff09;RESTFul 约束HTTP协议实现上的规范设计。 &#xff08;3&am…

消息队列MQ

一、消息队列 网络端的Http请求默认采用的是同步请求方式&#xff0c;客户端与服务器端是基于请求和响应模式进行通信的。也就意味着&#xff0c;客户端发起请求。必须要等待服务器端完成处理结果给客户端才能继续进行下一步操作&#xff0c;如果服务器发送网络延迟、宕机、卡顿…

使用C语言EasyX 创建动态爱心背景

简介 在计算机图形学的世界中&#xff0c;有很多方法可以使程序的界面更加吸引人。在本篇博客中&#xff0c;我将向大家介绍如何使用 EasyX 图形库在 C 中创建一个动态的爱心背景。这不仅是一个简单的动画效果&#xff0c;它还包括背景的星星、旋转的心形以及一个美观的背景渐…

Java基于SpringBoot+Vue的 4S店车辆管理系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈3 功能总览4 系统设计4.1 系统设计主要功能4.2 数据库设计4.2.1 数据库设计规范4.2…

freeRTOS系列教程之freeRTOS入门与工程实践【文档+视频教程+进阶视频教程】

《freeRTOS入门与工程实践》 前言课程内容授课方式 学前知识普及学前准备硬件准备资料准备 视频教程文档教程更好的阅读体验 前言 课程内容 嵌入式软件工程师的学习路线一般是&#xff1a;单片机->RTOS->Linux。当你掌握单片机开发后&#xff0c;如果要进一步提升编程水…

VUE 的eslint 代码规范检查

报错&#xff1a; You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignore all warnings in a file. 解决&#xff1a; 注释&#xff1a;...(config.dev.useEslint ? [creat…

go初识iris框架(七) - 实战资源导入和项目框架搭建

实战项目框架搭建 如下是项目框架搭建后的说明&#xff1a; config:&#xff1a;项目配置文件及读取配置文件的相关功能controller:控制器目目录,项目各个模块的控制器及业务逻辑处理的所在目录datasource:实现mysql连接和操作、封装操作mysql数据库的目录。model:数据实体目…