java 启动线程的两种方式

java多个线程同时启动的两种方式 【背景】今天遇到一个并发问题,为了在开发环境复现这个bug,需要让多个线程同时执行到某条语句。 【解决方案】 java1.5的concurrent包下的CyclicBarrier 和 CountDownLatch都能解决这个问题。不得不佩服Doug Lea! 【方法1】使用CyclicBarrier public class TestCyclicBarrier { class Worke... 阅读详情

启动线程肯定要用start()方法。当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。当cpu分配给它时间时,才开始执行run()方法(如果有的话)。START()是方法,它调用RUN()方法.而RUN()方法是你必须重写的. run()方法中包含的是线程的主体。


java启动线程一般有两种方式:

1继承Thread类


 

public class TestThread1 {

public static void main(String args[]) {


Runner1 r = new Runner1();

r.start();

for(int i=0; i<100; i++) {

System.out.println("Main Thread:------" + i);

}

}

}



class Runner1 extends Thread {

public void run() {

for(int i=0; i<100; i++) {

System.out.println("Runner1 :" + i);

}

}

}


2实现Runnable接口


public class TestThread1 {

public static void main(String args[]) {


Runner1 r = new Runner1();

Thread t = new Thread(r);

t.start();

for(int i=0; i<100; i++) {

System.out.println("Main Thread:------" + i);

}

}

}


class Runner1 implements Runnable {

public void run() {

for(int i=0; i<100; i++) {

System.out.println("Runner1 :" + i);

}

}

}



结论

当我们采用实现Runnable接口的方式来实现线程的情况下,在调用new Thread(Runnable target)构造器时,将实现Runnable接口的类的实例设置成了线程要执行的主体所属的目标对象target,当线程启动(start)时,这个实例的 run()方法就被执行了。当我们采用继承Thread的方式实现线程时,线程的这个run()方法被重写了,所以当线程启动时,执行的是这个对象自身的 run()方法。总结起来就一句话,如果我们采用的是继承Thread类的方式,那么这个target就是线程对象自身,如果我们采用的是实现Runnable接口的方式,那么这个target就是实现了Runnable接口的类的实例。


如果直接用Run方法,这只是调用一个方法而已,程序中依然只有主线程--这一个线程,其程序执行路径还是只有一条,这样就没有达到写线程的目的。

RT-Thread Studio使用笔记(四):带片外Flash(W25Q128)的OTA(YModem) 前言 在学习OTA之前,请先参考上两篇博客写的关于SPI设备及W25Q128的使用方法,传送门: https://blog.youkuaiyun.com/tigerots/article/details/107423633 https://blog.youkuaiyun.com/tigerots/article/details/107933991 如何使用OTA 一. 制作BootLoader 打开Bootloader 在线获取地址,注册,并根据RT-thread官方文档生成BootLoader,官方文档已经写的很清楚,再此 阅读详情

相关推荐

DC-DC 转换器中的压电谐振器:当前状态和限制

在功率转换器应用中,居里温度较低的谐振器的 k 2和 Q M显着降低会导致效率降低,需要仔细的热处理。由于使用 PR 的功率转换器在不同的条件下运行,包括温度范围、电压偏置和功率电平,因此不可避免地会出现非线性效应,必须妥善解决这一问题,以免影响转换器的性能。等效电路模型(Butterworth Van-Dyke 或 BVD 模型)将压电谐振器在其机械谐振附近的电响应转换为一个简单电路,该电路由与由电极形成的输入电容 C 0并联的串联 RLC 动分支组成,见图图 1 还显示了阻抗与频率的关系。

2301_79716471的博客 1297

Java中如何实现多线程,创建并开启新的线程

本文是Java多线程与并发的学习,介绍在Java中创建并开启线程的三种方式、在Java中何时会出现线程调度?了解方法调用栈。之后的学习内容将持续更新!!!

qq15035899256的博客 1万+

Carla-UE4Editor导入RoadRunner地图文件(保姆级教程)

以Carla官网导入RoadRunner地图的标准文档为参考,里面增添了很多细节和注意事项,遇到问题的小伙伴过来看看吧。

DSK_981029的博客 1万+

Java中有哪几种方式来创建线程执行任务

Java中常用的常见线程的几种方式

Alessio001的博客 897

二维紧束缚模型求解程序

假如我们已经推导出了二维紧束缚模型的哈密顿量矩阵H(kx,ky)的解析形式,那么在整个布里渊区对角化矩阵就可以得到能带。从技术上说这里面有以下几个问题。 1. 缺少实空间和倒空间的坐标,使得能带难以和布里渊区高对称点对应。 2. 最容易处理的布里渊区是矩形,对于其他多边形,如果全布里渊区mesh画费米面有一定技术困难。 因此一个好的处理框架是首先给出实空间原子坐标,给出实空间哈密顿量,...

wwxy1995的博客 4083

Abaqus边界条件设置避坑指南:为什么你的实体单元转动自由度总是不生效?

本文深入解析了Abaqus中实体单元转动自由度设置失效的根本原因。从力学原理与有限元节点自由度的本质区别出发,阐明了实体单元仅具有平动自由度,直接约束其转动自由度是无效操作。文章提供了对称边界条件的正确设置方法,并给出了使用耦合约束等高级方案来模拟真实抗转动约束的实战指南,帮助用户避免常见建模陷阱。

weixin_29290379的博客 621

线程的创建、启动、运行与终止

2.join的位置不可以随便( 在上面的代码中start t1、t2后 使用了t1.join t2.join 意为:启动t1线程、启动t2线程、等待t1线程执行结束、等待t2线程执行结束)那么,t就会被异常唤醒,在上文的"休眠线程"中说过:如果线程因为调⽤ sleep⽅法⽽阻塞挂起,当sleep被异常唤醒,它就会抛出InterruptedException,此时就会。cpu上工作,有⼀点要记得,因为线程的调度是不可控的,所以,这个⽅法只能保证 实际休眠时间是⼤于等于参数设置的休眠时间的。

slank_noob的博客 1652

手把手教你用Multisim 14.2仿真一个4.4V的LDO电路(附完整仿真文件)

本文详细介绍了如何使用Multisim 14.2仿真一个4.4V的LDO电路,从环境配置、核心参数解析到电路搭建和仿真调试。通过分压电阻精确计算和瞬态响应测试,帮助读者掌握LDO电路的设计与验证技巧,并附有完整仿真文件供参考。

weixin_28738397的博客 275

java中如何启动一个新的线程三种方法

java开启新线程的三种方法: 方法1:继承Thread类 1):定义bai一个继承自Java.lang.Thread类的du类A. 2):覆盖zhiA类Thread类中的run方法。 3):我们编写需要在run方法中执行的操作:run方法中的代码,线程执行体。 4):在main方法(线程)中,创建一个线程对象并启动线程。 (1)创建线程类对象: A类 a = new A类(); (2)调用线程对象的start方法: a.start();...

u010871655的博客 2万+

OpenCV-Python图形图像处理:自用的一些工具函数源代码

本文为《OpenCV-Python图形图像处理:博主自用的一些工具函数功能及调用语法介绍》内容配套函数的源代码。

老猿Python 2495

LVGL实战 透视卡盘

八张卡立在一个圆柱面上,摄像机在柱心前方。每帧对屏幕上的每个像素发一条射线,与卡片所在平面求交,得到三维交点,再投影回卡片自己的二维坐标系取样。透视、倾斜、近大远小、相互遮挡 —— 全部是这一步的副产物。

摸鱼专家 55

Java中有哪几种方式来创建线程执行任务?

以上几种方式,底层都是基于Runnable。所以创建线程的方式有4种也可以说是1种。

风归去. 773

YOLOv11的物理信息神经网络(PINN):引入物理规律约束目标运动预测

本文介绍了YOLOv11目标检测与PINN物理信息神经网络的融合技术。YOLOv11采用增强特征提取和参数优化架构,在保持实时性的同时提升检测精度。PINN通过将物理方程嵌入损失函数,实现数据高效学习。两者的结合可显著提升运动预测准确性和遮挡处理鲁棒性。文章详细阐述了环境配置、YOLOv11模型验证方法,并提供了基础PINN框架代码实现,展示了物理约束如何通过自动微分整合到神经网络中。该融合技术适用于自动驾驶、无人机导航等需要物理规律建模的视觉感知场景。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 423

Java线程的两种启动方式

创建新执行线程有两种方法。 一种方法是将类声明为 Thread 的子类,该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。 public class Hello_Java { public static void main(String[] args) { UserThread t1=new UserThread("1"); UserThread t...

qq_24508711的博客 562

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java中创建和启动线程的两种方式

方式1:继承Thread类 步骤: 1):定义一个类A继承于java.lang.Thread类. 2):在A类中覆盖Thread类中的run方法. 3):我们在run方法中编写需要执行的操作:run方法里的代码,线程执行体. 4):在main方法(线程)中,创建线程对象,并启动线程. (1)创建线程类对象:                 A类   a  =  new   A类();...

金州饿霸吃不饱的博客 586

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java线程的两种启动方式

/** * 实现Runnable接口 * @author dell */public class TicketRunnable implements Runnable{ //实现run方法 @Override public void run() { for(int i=0; i&lt;10; i++){ System.out.println(i+"  当前的线程为  "+Thread.cur...

u012304877的专栏 2095

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JAVA多线程的两种启动方式

在java中,有两种方式实现多线程,一个是继承Thread类,另一个是实现runnable接口,建议用runnable接口的方式,因为java是但继承多实现。 方式一:继承Thread类 代码如下: public class StartThread extends Thread { @Override public void run() { for (int i=0;i<9;i++){ System.out.println("学习 "+i);

cknb1的博客 308

Java启动线程两种方式总结

先查看jdk帮助文档,这么进行描述线程:线程是程序中的执行线程,可以由jvm来运行一个或者多个线程。 方法1:继承Thread 类 重写run方法即可 如下代码: public class Treadtest { //主方法 public static void main(String[] args) throws InterruptedException { Thre...

. 9693

java 线程同时启动_java多个线程同时启动的两种方式

【背景】今天遇到一个并发问题,为了在开发环境复现这个bug,需要让多个线程同时执行到某条语句。【解决方案】java1.5的concurrent包下的CyclicBarrier 和 CountDownLatch都能解决这个问题。不得不佩服Doug Lea!【方法1】使用CyclicBarrierpublic class TestCyclicBarrier {class Worker implemen...

weixin_35906775的博客 787

java中启动线程的两种方式

java线程启动方式

雪糕的博客 1061

Java多线程之两种启动线程方式

启动线程有两种方式,第一种是extends Thread,第二种是implements Runnable. 代码如下: 继承Thread: public class MyThread extends Thread{ public String name; public MyThread(String n){ name = n; } public void

qq_37714601的博客 510

java同时启动线程_java多个线程同时启动的两种方式

【背景】今天遇到一个并发问题,为了在开发环境复现这个bug,需要让多个线程同时执行到某条语句。【解决方案】java1.5的concurrent包下的CyclicBarrier 和 CountDownLatch都能解决这个问题。不得不佩服Doug Lea!【方法1】使用CyclicBarrierpublic class TestCyclicBarrier {class Worker implemen...

weixin_39978749的博客 242

启动线程java例子_Java创建和启动线程的两种方式实例分析

本文实例讲述了Java创建和启动线程的两种方式。分享给大家供大家参考,具体如下:方式1:继承Thread类步骤:1):定义一个类A继承于java.lang.Thread类.2):在A类中覆盖Thread类中的run方法.3):我们在run方法中编写需要执行的操作:run方法里的代码,线程执行体.4):在main方法(线程)中,创建线程对象,并启动线程.(1)创建线程类对象: A类 a = new ...

weixin_39963053的博客 112

java重新启动线程报错_Java创建多线程的两种方式:继承Thread类和实现Runnable接口...

继承Thread类:继承Thread类,再重写Thread类的Run方法,然后调用start()方法启动线程,启动线程后执行的是run方法。注意:多次启动线程(多次调用start()方法)是不合法的。实现Runnable接口:实现Runnable接口,再重写run方法,然后将这个实现类当做参数传给Thread类,例如:Thread dog = new Thread(runn,"小狗"),创建了一个...

weixin_39793813的博客 479

java怎么匿名启动一个线程_【Java】基础31:创建线程的两种方式

线程的创建有两种方式,昨天学习过其中的一种: 创建一个类,继承自Java里的Thread类,并重写run方法。最后再创建自定义线程的对象,并调用start方法,这样就启动一个线程了。那么Thread到底是个什么东西呢?一、Thread类在Java里面线程就是一个类,就叫Thread,无论是哪种创建方式,都是离不开它的,看看它有哪些常用方法: ①创建一个线程对象。其中可以给线程初始化赋值名字,若是没...

weixin_34550555的博客 475
上一篇: 如何编写函数才能提高代码质量
下一篇: Java程序员们最常犯的10个错误
benpaobagzb
博客等级 码龄11年 512粉丝 636原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值