创建线程的五种方式

一.继承Thread ,重写run

class MyThread extends Thread{@Overridepublic void run() {//这里的内容就是该线程要完成的工作while(true) {System.out.println("hello thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}
}
public class Demo1 {public static void main(String[] args) throws InterruptedException {Thread t = new MyThread();t.start();//执行run方法中的逻辑while(true) {System.out.println("hello main");Thread.sleep(1000);}}
}

运行结果: 

每秒中输出一次可能是main开头,也可能是thread开头,说明多个线程的调度顺序是"无序的",在操作系统内部也称为"抢占执行".

二.实现Runable,重写run,把Runable实例传入Thread中

class MyRunnable implements Runnable {@Overridepublic void run() {System.out.println("hello thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}
}
public class Demo2 {public static void main(String[] args) throws InterruptedException {Thread t = new Thread(new MyRunnable());t.start();while (true) {System.out.println("hello main");Thread.sleep(1000);}}
}

三.针对一的变形,使用匿名内部内,继承Thread 并重写run.

public class Demo3 {public static void main(String[] args) {new Thread() {@Overridepublic void run() {while (true) {System.out.println("hello thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}}.start();//t.start();while (true) {System.out.println("hello main");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}
}

1.创建一个子类(没有名字).

2.同时也创建了这个子类的实例 .

3.重写run方法.

四.匿名内部类,针对Runnable

public class Demo4 {public static void main(String[] args) {Thread t = new Thread(new Runnable() {//此处匿名内部类,只针对Runnable和Thread没有关系,只是把Runnable作为参数传入到Thread的构造方法中@Overridepublic void run() {while(true) {System.out.println("hello thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}});t.start();while (true) {System.out.println("hello main");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}
}

1.创建新的类,实现Runnable,名字是匿名的

2.创建了这个类的实例(一次性的)

3.重写run方法.

五.使用lambda 表达式

public class Demo5 {public static void main(String[] args) {Thread t = new Thread(() -> {while (true) {System.out.println("hello thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}});t.start();while (true) {System.out.println("hello main");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}
}

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

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

相关文章

Qt开发 | qss简介与应用

文章目录 一、qss简介与应用二、QLineEdit qss介绍与使用三、QPushButton qss1.常用qss1.1 基本样式表1.2 背景图片1.3 图片在左文字在右 2.点击按钮弹出菜单以及右侧箭头样式设置3.鼠标悬浮按钮弹出对话框 四、QCheckBox qss妙用:实时打开关闭状态按钮五、QComboBo…

UE4_材质_使用彩色半透明阴影

学习笔记,不喜勿喷!侵权立删,祝愿大美临沂生活越来越好! 本教程将介绍如何配置虚幻引擎来投射彩色半透明阴影。 此功能在许多应用中都很有用,常见例子就是透过彩色玻璃窗的彩色光。 一、半透明阴影颜色 阴影在穿过半…

博途S7-1500PLC“虚轴“编程应用

1、CODESYS如何添加虚轴 如何添加虚轴(AM400PLC)-CSDN博客文章浏览阅读164次。EtherCAT运动控制总线启用的时候,选择EtherCAT总线任务周期。选择好后,选择点击添加。https://rxxw-control.blog.csdn.net/article/details/139898985虚轴是利用软件算法实现的运动控制轨迹规划…

HarmonyOS ArkUi 官网踩坑:单独隐藏导航条无效

环境: 手机:Mate 60 Next版本: NEXT.0.0.26 导航条介绍 导航条官网设计指南 setSpecificSystemBarEnabled 设置实际效果: navigationIndicator:隐藏导航条无效status:会把导航条和状态栏都隐藏 官方…

公网IP变更自动微信通知与远程执行命令的C++开源软件

基本功能 智能公网IP变更监测与微信通知 一旦检测到公网IP地址发生变更,系统将自动通过预设的QQ邮箱(该邮箱与微信绑定,实现微信通知)发送新IP地址通知。同时,软件会即时更新本地配置文件中的IP地址及变更时间&#…

深度学习标注文件格式转换

json转xml 原始数据集文件夹中图片格式为bmp&#xff0c;标注文件为json&#xff0c;图片和标注文件放在同一个文件夹下面&#xff0c;将json转为xml格式&#xff0c;图片和标注文件分别存放在一个文件夹下面。 headstr """\ <annotation><folder>…

帮人安装打印机驱动踩过的坑

自从当了程序员&#xff0c;总被人认为是无所不能。安装系统&#xff0c;组装电脑都会。有啥只要跟电脑沾点边的事情都来找我。这不今天就被叫去帮人安装打印机驱动。 问题描述 以前老电脑都可以用打印机的&#xff0c;自从换新电脑后就不行了。别人可以用&#xff0c;就他的新…

HNU电子测试平台与工具2_《计算机串口使用与测量》

&#xff08;这个有留word哈哈&#xff09; 4.1 4.2 Linux 操作系统平台 一、实验目的 了解 Linux 系统文件系统的基本组织了解 Linux 基本的多用户权限系统熟练使用 ls、cd、cat、more、sudo、gcc、vim 等基本命令会使用 ls 和 chmod 命令查看和修改文件权限 二、实…

【C++知识点总结全系列 (06)】:STL六大组件详细总结与分析- 配置器、容器、迭代器、适配器、算法和仿函数

STL六大组件目录 前言1、配置器(1)What(2)Why(3)HowA.调用new和delete实现内存分配与销毁B.STL Allocator (4)allocator类A.WhatB.HowC.allocator的算法 2、容器(1)What(2)Which&#xff08;有哪些容器&#xff09;(3)序列容器&#xff08;顺序容器&#xff09;A.WhichB.array&…

计算机网络知识普及之四元组

在涉及到TCP/UDP等IP类通信协议时&#xff0c;存在四元组概念 这里只是普及使用 先来一些前置知识&#xff0c;什么是IP协议&#xff1f; IP协议全称为互联网协议&#xff0c;处于网络层中&#xff0c;主要作用是标识网络中的设备&#xff0c;每个设备的IP地址是唯一的。 在网…

【JVM排查问题】JProfiler性能分析工具连接远程服务器Docker容器中的Java服务

1、下载JProfiler https://www.ej-technologies.com/download/jprofiler/version_13 下载Windows版本以及Linux版本 Windows用于可视化、Linux用于在Docker容器中启动 2、将Linux版本的JProfiler上传到Docker容器中&#xff0c;宿主机cp命令到容器中 docker cp /home/data/s…

像学Excel 一样学 Pandas系列-创建数据分析维度

嗨&#xff0c;小伙伴们。又到喜闻乐见的Python 数据分析王牌库 Pandas 的学习时间。按照数据分析处理过程&#xff0c;这次轮到了新增维度的部分了。 老样子&#xff0c;我们先来回忆一下&#xff0c;一个完整数据分析的过程&#xff0c;包含哪些部分内容。 其中&#xff0c…

CAM350如何添加走线?

在CAM350中如何添加走线? 有时候由于PCB文件丢失或其它原因,只有GERBER文件,这时候LAYOUT工程师就只能使用CAM350在GERBER里面修改。 那在CAM350里面如何添加走线呢? 操作方法如下: 1、选择菜单栏Add 选择Line 2、在走线前,要先设置D码,就是走线的形状和宽度。必需选择…

【服务器部署】Jenkins配置前端工程自动化部署

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0c;产…

BIOS中的设置虽然不少,但其实大部分时候只需进行一些简单的调整

序言 浏览BIOS可能会让人感到不知所措,因为要考虑的设置太多了。但是,你应该在BIOS中进行一些简单的调整,以提高系统的性能和稳定性。我们将向你展示其中的一些调整,并解释你可能想要使用它们的时间和原因。 用密码保护你的BIOS 虽然我们很小心地对用户帐户进行密码保护…

[译]Reactjs性能篇

英文有限&#xff0c;技术一般&#xff0c;海涵海涵&#xff0c;由于不是翻译出身&#xff0c;所以存在大量的瞎胡乱翻译的情况&#xff0c;信不过我的&#xff0c;请看原文&#xff5e;&#xff5e; 原文地址&#xff1a;https://facebook.github.io/react/docs/advanced-per…

JavaSE阶段面试题(一)

目录 1.int a 1, int b 1, Integer c 1, Integer d 1&#xff1b;四个区别和联系&#xff0c;以及c和d是同一个吗&#xff1f; 2.为什么重写HashCode必须重写euqals&#xff0c;两者之间的关系&#xff1f; 3.创建对象的方式有哪些 4.重写和重载的区别 5.抽象类和接口…

day02-广播机制

广播机制 广播是numpy对不同形状的数组进行数值计算的方式&#xff0c;对数组的算术运算通常在相应的元素上进行 1.如果两个数组a和b形状相同&#xff0c;即满足a.shape b.shape&#xff0c;那么a*b的结果就是a与b数组对应位相乘。这要求维数相同且各维度的长度相同 a np.a…

七大排序算法的深入浅出(java篇)

&#x1f341; 个人主页&#xff1a;爱编程的Tom&#x1f4ab; 本篇博文收录专栏&#xff1a;Java专栏&#x1f449; 目前其它专栏&#xff1a;c系列小游戏 c语言系列--万物的开始_ 等等 &#x1f389; 欢迎 &#x1f44d;点赞✍评论⭐收藏&#x1f496;三连支…

【高级篇】第9章 Elasticsearch 监控与故障排查

9.1 引言 在现代数据驱动的应用架构中,Elasticsearch不仅是海量数据索引和搜索的核心,其稳定性和性能直接影响到整个业务链路的健康度。因此,建立有效的监控体系和掌握故障排查技能是每一位Elasticsearch高级专家的必备能力。 9.2 监控工具:洞察与优化的利器 在Elastics…