zoukankan      html  css  js  c++  java
  • 线程控制(阻塞、睡眠、让步)

    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

  • 相关阅读:
    新建mvc项目iis报404错误!
    .Net MVC HTTP 错误 404.0 Not Found 解决方法
    一个有趣的C#面试题
    parted分区
    sdp安装及实例
    dede:arclist标签按自定义字段排序
    dedecms标签快速
    也谈string.Join和StringBuilder的性能比较
    WinForms 实现气泡提示窗口
    各种“禁用窗口上的关闭按钮”方法总结及源码
  • 原文地址:https://www.cnblogs.com/wintersong/p/4752080.html
Copyright © 2011-2022 走看看