Zhang_Tmac 2021-01-10 09:59 采纳率: 0%
浏览 7

线程状态BLOKED的问题

public class MyThread extends Thread{
    @Override
    public void run() {
        System.out.println("running....");
    }

    public static void main(String[] args) throws InterruptedException {
        MyThread t = new MyThread();
        log(t);
        t.start();
        log(t);
        for (int i = 0; i < 50; i++) {
            log(t);
        }
    }
    public static void log(Thread thread){
        System.out.println("Thread status is: " + thread.getState());
    }
}

打印的结果为:

Thread status is: NEW
Thread status is: RUNNABLE
Thread status is: RUNNABLE
Thread status is: RUNNABLE
Thread status is: RUNNABLE
Thread status is: RUNNABLE
Thread status is: BLOCKED
Thread status is: BLOCKED
running....
Thread status is: RUNNABLE
Thread status is: TERMINATED
Thread status is: TERMINATED

为什么线程启动后为经历BLOKED的状态呢?

  • 写回答

1条回答 默认 最新

  • Johar 2021-01-10 10:33
    关注

    CPU资源有限,线程运行需要占用CPU资源,目前一般线程运行都是采用抢占CPU的机制,系统给每个线程分配时间片,在某个时间片内执行某个线程。若是CPU核数少,开启的系统资源多,启动的线程就会经历Blocked状态。

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入