码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Thread 类的基本用法


    @[TOC]目录
    ##Thread 类的基本用法

    线程的创建

    我们介绍5种创建线程的方法:
    方法一:创建一个类,继承Thread类,重写run()方法
    在这里插入图片描述
    注意:我们并不要认为创建好相关的类以后线程就创建好了,我们还需要创建相对应的实例,并且调用start()方法,一个线程才算创建好了,并且启动了。
    在这里插入图片描述
    方法二:创建一个类,并且实现Runnable接口,并且重写run()方法
    在这里插入图片描述
    在这里插入图片描述
    这种写法的好处是:代码的耦合度降低了
    方法三:继承Thread类,以匿名内部类的形式创建
    在这里插入图片描述
    方法四:实现Runnable接口,以匿名内部类的形式创建

    在这里插入图片描述
    方法五:使用lambda表达式来创建线程(推荐使用)
    在这里插入图片描述

    如何获取线程实例

    我们在获取实例化对象的时候,我们一般是通过 new 构造方法 的形式来获取对象。所有说,一种很简单获取线程实例的方法是通过 new 构造方法。 但是,我想问的是,我们在创建一个线程类的时候,如何获取该线程的实例。 比较简单使用:Thread.currentThread()就可以了。

    线程休眠

    线程休眠:在规定的时间内,线程不能运行,直到到达规定的时间才可以运行。
    我们通过 Thread.sleep(自己规定的时间(单位是:毫秒(ms)))
    这个方法会抛出异常,需要我们手动地解决一下。
    在这里插入图片描述

    线程中断

    有的时候,一个进程中多个线程在执行的时候,有的情况下,有的线程需要中断,这里我提供两种线程中断的方法

    方法一:自己设置一个公有变量当作一个标识位
    在这里插入图片描述

    方法二:使用Thread自己带的标识位(重点,难点)

    情况一:
    在这里插入图片描述

    情况二:
    在这里插入图片描述
    我们可以看出第二种情况线程并没有中断,只是报一个异常然后接着运行
    我们要知道interrupt()方法是如何执行
    在这里插入图片描述

    线程的等待

    使用方式:Thread对象.join();
    我们无法规定线程的开始执行的顺序,但是我们可以通过join()方法规定线程结束的顺序

    哪一个线程调用了join方法,其他线程要等待该线程执行完,他们才能结束
    在这里插入图片描述
    例如:我们有线程1,线程2和主线程,我们想让线程一和线程二执行完后,主线程在执行结束
    在这里插入图片描述
    我们有线程1,线程2和主线程,我们想让线程一在线程二前结束,线程二在主线程前结束
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    直流电源供电 LED升压 恒流驱动IC 方案AP9193
    适用于 Windows 的企业级 Subversion 服务器
    202305青少年机器人技术等级考试理论综合试卷(三级)
    使用hash和history实现前端历史状态切换,触发事件驱动函数来完成部分数据的加载(使用hash和history实现前端路由切换,含完整源码+注释)
    Ansys Speos | 助力汽车按键开关设计与优化
    【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(二)
    JAVA计算机毕业设计兴澜幼儿园管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
    偏微分方程的人工智能
    【STM32学习】通用定时器的应用实验
    一体机支持使用硬件设备国密加密,JumpServer堡垒机v2.26.0发布
  • 原文地址:https://blog.csdn.net/weixin_62877993/article/details/125952442
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号