前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【多线程-从零开始-叁】线程的核心操作

【多线程-从零开始-叁】线程的核心操作

原创
作者头像
椰椰椰耶
发布2024-09-21 19:35:31
1000
发布2024-09-21 19:35:31
  • 此时两个 join 都是写在 main 里面的,所以都是 main 线程等待 t1t2t1t2 之间没有等待关系
  • 若在 t2 中写 t1.join,则 t2 需要等待 t1 线程先执行完

  • 上述 join 都是无参的,意思是“死等”,“不见不散”,被等待的线程,只要不执行完,就会持续阻塞
  • 上述死等操作,其实不是一个好的选择,因为一旦被等待的线程代码出现了一些 bug 了,就可能使这个线程迟迟无法结束,从而使等待线程一直阻塞而无法进行其他操作
  • 所以在实际开发中,都会设置一个“超时时间”,最多等多久,就是 join 的参数
    image.png
    image.png
    相关, 像 Windows, Linux 系统,线程调度开销比较大;计算机中还有一类系统——“实时操作系统”,就能把调度开销尽可能降低,开销小于一定的误差要求,从而可以做到更精确。一般用于航空航天,军事...... 不过实时操作系统是舍弃了很多功能换来的实时性

四、获取当前线程引用

想在某个线程中,获取到自身的 Thread 对象的引用,就可以通过 currentThread 来获取到

代码语言:java
复制
public class Demo7 {  
    public static void main(String[] args) throws InterruptedException {  
        
        Thread mainThread = Thread.currentThread();  
        
        Thread t = new Thread(()->{  
            //需要在 t 中调用主线程.join  
            System.out.println("t 线程开始等待");  
            try {  
                mainThread.join();  
            } catch (InterruptedException e) {  
                throw new RuntimeException(e);  
            }            
            System.out.println("t 线程结束");  
        });        
        t.start();  
        Thread.sleep(1000);  
        System.out.println("main 线程结束");  
    }
}
//打印顺序:
//t 线程开始等待
//main 线程结束
//t 线程结束

任何线程中,都可以通过这样的操作,拿到线程的引用

任何需要的时候,都可以通过这个方法来获取到

五、休眠当前线程

  • Thread.sleep 可以让调用的线程阻塞等待,是有一定时间的
  • 线程执行 sleep,就会使这个线程不参与 CPU 调度,从而把 CPU 资源让出来给别人使用
  • 也把 sleep 这种操作,称为“放权”,放弃使用 CPU 的权利
  • 有的开发场景中,发现某个线程的 CPU 占用率过高,就可以通过 sleep 来进行放权改善
  • 虽然 CPU 就是给程序用的,但是有的程序可能包含很多线程,这些线程之间是有“轻重缓急”的
  • 虽然线程的优先级就可以产生影响,但是优先级的影响是比较有限的,也可以通过 sleep 来更明显的影响到这里的 CPU 占用

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、创建一个线程-start()
  • 二、线程的终止(中断)
    • 1. 通过共享的标记来进行沟通
      • 2. 调用 interrupt 方法来通知
      • 三、等待一个线程-join()
      • 四、获取当前线程引用
      • 五、休眠当前线程
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档