• 线程控制(阻塞、睡眠、让步)


    1、join线程

    当一个线程需要等待另一个线程执行完毕再执行的话,就调用join方法,例如,线程  A B  ,A要等B执行完再执行,则在A执行时要调用B的join方法,使A进入阻塞状态,当B执行完之后再执行A;

    public class MyRunnable implements Runnable{
    
        @Override
        public void run() {
            for(int i=0;i<10;i++){
                if(i==5){
                    MyRunnable2 my2=new MyRunnable2();
                    Thread t2=new Thread(my2);
                    t2.setName("join");
                    t2.start();
                    try {
                        t2.join();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                System.out.println(Thread.currentThread().getName()+" "+i);
            }
        }
     
    }
    public class MyRunnable2 implements Runnable{
    
        @Override
        public void run() {
            for(int i=0;i<10;i++){
                System.out.println(Thread.currentThread().getName()+" "+i);
            }        
        }
    
    }
    public class Test {
        public static void main(String[] args) {
            MyRunnable my1=new MyRunnable();
            Thread t1=new Thread(my1);
            t1.start();
        }
    
    }

    2、线程睡眠

    sleep(指定的毫秒数),在线程休息的时候,其他线程不会获取CPU的执行权限,如下代码:每隔一秒打印一次

    public void run() {
            for(int i=0;i<10;i++){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+" "+i);
            }        
        }

    3、线程让步:

    线程让步和线程睡眠差不多,唯一的区别就是:在让步期间会放弃CPU的执行权限  Thread的  yiled静态方法

    4、线程的优先级

    线程优先级高的比较容易获得CPU的执行权限,优先级低的不太容易获得CPU的执行权限,但是当线程进行竞争是,不一定优先级高的一定会获得执行权限。

    static int MAX_PRIORITY 

              线程可以具有的最高优先级。 值是10

    static int MIN_PRIORITY 

              线程可以具有的最低优先级。 值是1

    static int NORM_PRIORITY 

              分配给线程的默认优先级。   值是5

  • 相关阅读:
    iphoneX适配
    是时候啃一啃http跟https了
    使用阿里巴巴矢量图标库的图标
    react使用高阶组件进行界面跳转
    js性能提升之函数的防抖和节流
    vuex的一些需要知道的点
    react项目之使用猪齿鱼框架---dataSet的基础使用
    从js下手提升代码性能
    vue+ts搭建工程
    学习笔记之TypeScript语法一
  • 原文地址:https://www.cnblogs.com/wintersong/p/4752080.html
Copyright © 2020-2023  润新知