zoukankan      html  css  js  c++  java
  • 从线程的优先级看饥饿问题

    饥饿与公平:

    1.高优先级吞噬所有低优先级的CPU时间片

    2.线程被永久堵塞在一个等待进入同步块的状态

    3.等待的线程永远不被唤醒

    关于优先级,编程的时候注意:

    不要假定高优先级的线程一定先于低优先级的线程,不要有逻辑依赖线程优先级,否则可能有意外错误。因为,不同的平台,对于同一个优先级的数值,可能代表的含义不一样。

    但是,大多数我们看到的还是,优先级高的,抢到CPU的概念执行更高。

    package com.roocon.thread.t4;
    
    public class Target implements Runnable{
    
        @Override
        public void run() {
            while(true){
                System.out.println(Thread.currentThread().getName()+"is running");
            }
        }
    }
    package com.roocon.thread.t4;
    
    public class Demo {
        public static void main(String[] args) {
            Thread t0 = new Thread(new Target());
            Thread t1 = new Thread(new Target());
            t0.setPriority(Thread.MAX_PRIORITY);
            t1.setPriority(Thread.MIN_PRIORITY);
            t0.start();
            t1.start();
        }
    }

    运行结果:

    Thread-1is running
    Thread-1is running
    Thread-1is running
    Thread-1is running
    Thread-1is running
    Thread-1is running
    Thread-1is running
    Thread-1is running
    Thread-1is running
    Thread-1is running
    
    ...//大多数都是Thread-1is running,偶尔是Thread-0is running
    Thread-1is running 
  • 相关阅读:
    java的概述 常量 变量
    css 基础2
    css 盒子模型1
    css 基础1
    HTML 基础 3
    HTML基础2
    servletContext百科
    hibernate 一对多双向关联 详解
    hibernate generator class="" id详解
    Hibernate缓存原理与策略
  • 原文地址:https://www.cnblogs.com/sunnyDream/p/8001415.html
Copyright © 2011-2022 走看看