• Thread中几个常用的api详解join,interrupt


    1.join()

    join方法可以在多线程中帮我们实现调用线程的同步效果,比如,现在有三个线程,a,b,c

    a中启动了b和c线程异步去执行一件事,但是a希望他们做完以后再继续往下执行,那么就可以在调用b和c启动之后,调用每个线程的join方法,意思是等待它们执行完毕,代码如下:

    1. public static void main(String[] args) throws InterruptedException {
    2. Thread thread = new Thread() {
    3. @Override
    4. public void run() {
    5. System.out.println("我是线程1");
    6. }
    7. };
    8. Thread thread1 = new Thread() {
    9. @Override
    10. public void run() {
    11. System.out.println("我是线程2");
    12. }
    13. };
    14. thread.join();
    15. thread1.join();
    16. System.out.println("我是主线程");
    17. }

    2.interrupt()

    这个方法可以理解成打断线程的当前状态,有以下几个场景啊:我们通常可以用来实现通过一个线程,控制另一个线程是否运行,在需要通知另一个线程的时候调用interrupt(),然后在停止的线程中有一个判断逻辑,判断当前线程的状态

    • 打断阻塞状态下的线程,比如调用了sleep或者是yield方法等,如果这个时候,别的线程调用了该线程的interrupt()方法,就会抛出一个interruptedException,并且把是否打断状态改为false
    • 打断正在运行的线程,意思就是正在执行别的代码,没有处于sleep或别的状态下,那么这个时候就会把,thread1.isInterrupted(),值改为true
    • 打断park,park就是让当前线程阻塞,调用该线程的interrupt(),可以让它继续向下运行,但是注意哦,park方法是否继续向下运行,依靠的是当前线程thread1.isInterrupted()是否为true,如果为true,则无法再次阻塞,意思就是假如一个线程调用了一次LockSupport.park()方法,此时另一个线程打断了它,那么它继续往下运行的时候,又调用了一次LockSupport.park()方法,是没办法阻塞的,因为这个时候当前线程的isInterrupted()为true,所以如果希望再次往下运行,可以在第一次park()方法的后边,调用Thread.Interrupted()方法,可以帮我们把打断状态改为false,使程序调用park()方法时可以再次阻塞,代码大致如下
      1. public static void main(String[] args) throws InterruptedException {
      2. Thread thread = new Thread() {
      3. @Override
      4. public void run() {
      5. LockSupport.park();
      6. System.out.printf("当前打断状态为%s\n",Thread.interrupted());
      7. LockSupport.park();
      8. System.out.println("dssdsds");
      9. }
      10. };
      11. thread.start();
      12. thread.interrupt();
      13. }

  • 相关阅读:
    2023_Spark_实验十二:Spark高级算子使用
    k8s configMap中subPath字段和items字段详解
    ArGIS Engine专题(15)之GP模型在地图服务与地图服务之间实现叠置分析
    巧用VBA实现:基于多个关键词模糊匹配Excel多行数据
    Linux3使用Nginx部署前端项目
    景联文科技助力金融机构强化身份验证,提供高质量人像采集服务
    如何创建一个React组件并渲染到DOM中?
    【Linux】之创建普通用户并禁止root用户远程登陆
    awk应用
    高数 | 精通中值定理 解题套路汇总
  • 原文地址:https://blog.csdn.net/weixin_59244784/article/details/132762250