多线程的创建与使用(二)

Java多线程--创建多线程的基本方式二:实现Runnable接口 阅读详情

多线程(二)

线程的状态

  • 创建状态

  • 就绪状态

  • 阻塞状态

  • 运行状态

  • 死亡狂态

    如何停止线程

    package base.duoxiancheng.Demo05;
    
    public class TestSop implements Runnable {
        private boolean flage=true;
    
        @Override
        public void run() {
            int i=0;
            while (flage){
                System.out.println("线程运行在"+i++);
            }
        }
        public  void stop(){
            this.flage=false;
        }
    
        public static void main(String[] args) {
            TestSop testSop=new TestSop();
            new Thread(testSop).start();
            for (int i = 0; i <1000 ; i++) {
                if (i==900){
                    testSop.stop();}
                {  System.out.println("运行中"+i);
                }
    
            }
        }
    }
    
    

建议让线程自己停下,建议设置一个标志位的终止变量,同个flag的true或者false来终止线程

线程的休眠 Sleep

sleep(设置休眠的毫秒值)

sleep需要有一个异常来抛出

sleep时间到达之后会让线程进入就绪状态

sleep用于模拟延迟或者倒计时

每个对象都有一把锁,但是sleep不会释放锁

模拟倒计时

package base.duoxiancheng.Demo06;

public class Sleeptest implements Runnable {
    private boolean flag=true;

    @Override
    public void run() {

        for (int i = 0; i <=10 ; i++) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println(+i);
            if (i==10)
                break;



        }


    }

    public static void main(String[] args) {
        Sleeptest sleeptest =new Sleeptest();
        new Thread(sleeptest).start();
    }
}

## 探知此时线程的状态

package base.duoxiancheng.Demo07;

public class TestState {
    public static void main(String[] args) throws InterruptedException {
        Thread thread =new Thread(()->{
            for (int i = 0; i < 5; i++) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {

                }

            }
            System.out.println("/////");

        });
        Thread.State state = thread.getState();
        System.out.println(state);
        thread.start();
        while (state!=Thread.State.TERMINATED){
            Thread.sleep(100);
            state=thread.getState();
            System.out.println(state);
        }

    }
}

运行结果

NEW
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
/////
TERMINATED

线程的优先级

        thread.setPriority(优先级(1-10));
        这个一定要在线程运行之前 thread.start之前
        
在abaqus中利用point-based 来快捷定义螺栓连接 abaqus中可以通过point-based方式定义连接点的位置,并对连接方式进行定义,可以进行螺栓连接的模拟。 可以通过逐点输入坐标或导入外部的坐标位置 也可以通过阵列的方式定义点 定义完点后就利用create fasteners,选择point-based,选取刚才创建好的点阵列,然后定义连接的属性,如下图 定义connector section时,类型选择translator,相当于只有1方向可以动,定义弹性模量以及破坏准则。 案例操作 假如有两个板,通过... 阅读详情

相关推荐

SAP与泛微OA集成(半导体行业)

本项目通过SAP PO中间件集成SAP与泛微OA在半导体行业的应用,由于行业特殊性,广泛深入应用了RSA加密等特性

集信通 1162

C语言多线程编程入门:pthread库实战案例详解

在当今的软件开发领域,多线程编程已经成为了提高程序性能和响应能力的重要手段。C语言作为一门经典且高效的编程语言,通过`pthread`库为开发者提供了强大的多线程编程支持。`pthread`库是POSIX线程库的实现,它允许开发者在C语言程序中创建、管理和同步多个线程。本文将带领大家从基础概念入手,通过多个实战案例详细介绍`pthread`库的使用,帮助技术人员快速入门C语言多线程编程。

星辰夜语的博客 703

计算机保研/考研面试题——计算机组成原理篇

本文总结了985和华五学校习计算机保研/考研常问面试时的计算机组成原理题,欢迎点赞、收藏、评论、关注

安晴晚风的博客 7547

多线程--创建线程的三种方法

创建线程的三种方法

zx733988的博客 459

Python | KS检验以及其余非参数检验的实现

Python | KS检验以及其余非参数检验的实现1 什么是KS检验2 KS检验分类?3 KS检验的Python实现3.1 检验指定的数列是否服从正态分布3.2 检验指定的两个数列是否服从相同分布4 其余的非参数检验4.1 Wilcoxon符号秩检验(t检验的非参数版本)4.2 Kruskal-Wallis H检验(方差分析的非参数版本)4.3 Mann-Whitney秩检验5 参考 1 什么是KS检验 定义:检验一个分布f(x)与理论分布g(x)【比如正态分布】是否一致,或两个观测值分布是否有显著差异的检

RUC_Lee的博客 1万+

14 Prompt 的边界:什么时候必须用 RAG 或微调

Prompt 不是万能解法。本文用“改输入、补知识、改模型”这条主线,讲清什么时候继续优化 Prompt,什么时候必须引入 RAG、工具调用或微调,帮助你避免用重技术掩盖轻问题。

老于的笔记的专栏 208

java 多线程两种方式_Java多线程(二)——常用的实现多线程的两种方式

一、继承Thread类创建线程类Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。Java使用线程执行体来代表这段程序流。Thread类的声明如下:public class Thread implements Runnable {}可以看到,Thread本身就实现了Runnable接...

weixin_42499379的博客 318

UG NX二次开发(C#)-VS2022配置NX二次开发模板不能正常显示的问题

随着VS2022的发布,使用VS2022进行UG NX二次开发的人员也会越来越多,但是由于VS2022和以前的VS版本采用代码结构不同,而UG NX的二次开发编程模板还没有适应于VS2022的模板配置,所以不能正常的创建一个完整的工程。本文采用曲线救国的方式来实现VS2022下的UG NX二次开发。如果有读者能很好的解决模板配置,不吝赐教。

GimiGimmy 4272

Java中多线程的使用

Java中多线程的使用 第一种继承Thread类 1.创建自定义类并继承Thread类。 2.重写Thread类中的run方法,并编写该线程的业务逻辑代码。 package com.mie.test; public class MyThread1 extends Thread{ @Override public void run() { // TODO Auto-generated method stub //定义业务逻辑 for (int i = 0; i <

村口王大爷的博客 197

RK3568平台开发系列讲解:UBOOT详细介绍

U-boot是一款广泛使用的开源引导加载程序,支持多种嵌入式操作系统和处理器架构。其主要功能包括系统上电时的硬件初始化、引导操作系统内核等。U-boot的引导流程通常包括Boot Code、idbloader.img、uboot.img、boot.img和rootfs.img等步骤。启动U-boot时,通过Debug串口连接板卡,按下ctrl+c键可进入U-Boot命令行模式。U-boot启动过程中会执行一系列初始化操作,如打印系统信息、初始化内存、加载内核设备树、初始化I2C、PMIC电源芯片、DRM框架

内核笔记 806

47、利用组策略配置 Windows 防火墙与 IPsec 全解析

本文深入解析了如何利用组策略配置Windows防火墙与IPsec,涵盖防火墙规则基础、IPsec身份验证与加密机制、服务器和域隔离实现方法、WFAS中新旧IPsec规则的区别与配置流程,并详细说明了防火墙属性与规则的优先级计算方式。同时介绍了证书服务、EFS等未详述的安全功能及相关学习资源,帮助管理员通过组策略有效提升网络安全性。

onion的博客 100

Java多线程之线程的创建与Thread类的使用

本篇文章介绍java多线程中Thread类的使用以及有关线程对象创建和常用方法。

未见花闻的博客 3169

深度解构事务码 SQF:Support Query Framework 与 ABAP 静态分析实战

某制造企业在年度审计前,需要确认自定义发票过账程序 ZFI_INV* 系列是否存在硬编码公司代码与未捕获异常。技术团队在字段填入ZFI_INV*后,勾选与规则,执行扫描。SQF 生成的 ALV 报告列出 42 个警告,其中 17 条与抛出 CX_SY_NO_HANDLER 相关,8 条涉及动态 SQL 注入风险。结果导出至 Excel 供开发整改,并在 ATC 阶段验证修复。此过程较手工逐个执行 Code Inspector 节省超 80 % 时间。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 214

玩转多线程--多线程的创建与造成线程安全的原因

一个线程就是一个执行流,每个线程之间都可以按照自己的顺序执行自己的代码,多个线程之间“同时”执行多份代码。多线程编程其实也可以称作为“并发编程”。对于进程也可以实现并发编程,但是和线程相比,线程更轻量创建线程比创建进程更快销毁线程比销毁进程更快调度线程比调度进程更快调用interrupt()方法来通知,如果线程因为调用wait/join/sleep等方法而阻塞挂起,则以InerruptedException异常的形式通知。

2401_83429250的博客 2541

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

QT多线程的创建、线程的创建方法、QThread类

描述了QT中创建线程的好处,讲述了两种不同的创建线程的方法,并附带演示效果

2301_76958642的博客 1648

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python使用类创建多线程(二)

Python使用类创建多线程(二)使用类创建多线程 使用类创建多线程 import time import threading #创建mythread类,继承threading.Thread父类 class mythread(threading.Thread): def __init__(self,name = 'python'): super().__init__() self.nam...

未知艺术家的博客 1802

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

多线程的创建

消息通信、12306、网盘、淘宝、京东系统都离不开多线程技术。

weixin_59855900的博客 2384

关于多线程创建的几个问题

多线程编程是一个优秀程序员必备的能力,多线程是解决项目中性能问题的一个重要技术利器,现在的计算机基本都是多核处理器,使用多线程编程可以大大提高处理器的使用效率,提升系统的吞吐率。 1 线程的创建 01、方式一:继承Thread类 继承Thread类创建多线程的步骤: 1、定义子类,继承Thread类; 2、子类中重写Thread类中的run方法; 3、创建...

z123456789XDW的博客 5523

Java多线程的创建与Thread类的方法及使用

一个线程就是一个 “执行流”. 每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 “同时” 执行着多份代码.举个例子如下场景:一家公司要去银行办理业务,既要进行财务转账,又要进行福利发放,还得进行缴社保。如果只有张三一个会计就会忙不过来,耗费的时间特别长。为了让业务更快的办理好,张三又找来两位同事李四、王五一起来帮助他,三个人分别负责一个事情,分别申请一个号码进行排队,自此就有了三个执行流共同完成任务,但本质上他们都是为了办理一家公司的业务。

积跬步以至千里 1009

多线程的创建与使用

多线程的概念 程序:是为了完成特定任务,用某种语言编写的一组指令的集合,即指一段静态代码。 进程:是程序的一次执行过程,或是正在进行的一个程序,是一个动态的过程:有它自身的产生、存在和消亡过程——生命周期。 线程:进程可进一步细化为线程,是一个程序内部的一条执行路径。 内存结构: 进程可进一步细化为线程 每个线程,拥有自己独立的:栈、程序计数器。 多个线程,共享同一个进程中的结构:方法区、堆。...

爱宝李克用的博客 197

UE4 多线程 创建与使用

UE4 多线程使用分为以下几种: 1.创建标准线程 2.使用线程池 3.使用TaskGraph系统 使用线程时需要注意,不要在非GameThread线程内执行下面几个操作: 不要 创建/ 修改/ 删除 任何 派生自UObject的对象。 不要使用定时器 TimerManager 不要使用任何绘制接口,例如 DrawDebugLine 1...

pzh的博客 7929

Qt多线程的创建详解

文章目录一、摘要1.线程基础2.为什么要创建多线程3.创建多线程的方法二、继承于QObject线程的创建1.项目创建2.代码编写与实现三、线程间数据的传递1. 通过外部变量2.通过信号与槽机制四、总结 一、摘要 1.线程基础 在Qt项目中,每个程序都是在线程中工作,进行UI显示、数据处理或者信号与槽的响应等等。程序启动后拥有的第一个线程为程序的主线程,在UI项目中,UI所在的线程即为主线程。 2....

qq_34578785的博客 4520

多线程(线程的创建与常见方法的使用)

本文介绍了Java中线程的创建与常用方法。线程有三种创建方式:继承Thread类(简单直接但扩展性差)、实现Runnable接口(扩展性强,可共享资源)和Callable接口结合FutureTask(可获取返回值)。文章还详细讲解了线程的常用方法,包括名称设置、休眠、优先级调整、守护线程设置、线程礼让和插队等操作,帮助开发者更好地控制线程执行流程,实现多线程协作与同步。这些技术能有效提升程序并发处理能力。

weixin_52811458的博客 1248

多线程原理与实战 之 线程创建 (二)

方法,有一个有意思的点是,线程池的容量固定为3,这时提交了四个任务,那么在前三个任务未执行完的情况下,第四个任务会被放入队列等待,等前面的任务执行完了之后才会有空闲的线程来处理这个任务。一样,也是一个函数式接口,重要的是call()有一个返回值,这个返回值的类型和形参的类型是一样的。可以看到第四个任务是由编号为1的线程完成的,而编号为1的线程一开始执行的是第一个任务,在执行完之后才执行的第四个任务。的实例,这个接口负责的是池子里线程的管理和调度,同时还有定时执行、单线程、并发数控制等高级功能。

spy47_的博客 782

多线程1:认识与创建线程

多线程1:认识与创建线程。

qq_59940419的博客 918

多线程的创建与管理

摘要 本文介绍了Java中线程的基本概念和创建方法。线程是程序执行的独立单元,能够提高程序并发性和资源利用率。文章详细讲解了线程与进程的区别,以及Thread类的常用构造方法和关键方法。通过5种不同方式(继承Thread类、实现Runnable接口等)演示了线程的创建过程,并分析了每种方式的适用场景和优缺点。重点比较了继承Thread类和实现Runnable接口两种主要方法,解释了为何后者更推荐使用。最后还介绍了匿名内部类等简化线程创建的技巧,为理解Java多线程编程提供了基础指导。

2402_89003542的博客 1050
上一篇: 多线程的创建与使用(一)
下一篇: 关于网络命令行指令的基础知识
javaairman
博客等级 码龄5年 28粉丝 25原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值