zoukankan      html  css  js  c++  java
  • 高并发和多线程(2)——Sleep Yield Join

    工作中用好多线程是你编码的一大亮点,手敲下Thread类下面的   Sleep Yield   Join  更好的理解下这几个方法:

    Sleep 

    让当前正在执行的线程先暂停一定的时间,并进入阻塞状态。在其睡眠的这段时间内,该线程由于不是处于就绪状态,因此不会得到任何执行的机会。

    因此即使系统中没有任何其他可执行的线程,处于sleep中的线程也不会执行。因此sleep方法经常用来暂停线程的执行,当sleep到时间后,该线程转入就绪状态,这样才能够继续执行


    static void testSleep() {
    new Thread(()->{
    for(int i=0; i<100; i++) {
    System.out.println("A" + i);
    try {
    Thread.sleep(500);
    //TimeUnit.Milliseconds.sleep(500)
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }).start();
    }



    Join

    join方法时让一个线程等待另一个线程执行完才能继续执行,如果线程B执行中调用了线程A的join方法,则线程B将会阻塞,知道线程A执行完为止,B才能继续执行


    static void testJoin() {
    Thread tA = new Thread(()->{
    for(int i=0; i<10; i++) {
    System.out.println("A" + i);
    try {
    Thread.sleep(500);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    });

    Thread tB = new Thread(()->{

    try {
    tA.join();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }

    for(int i=0; i<10; i++) {
    System.out.println("B" + i);
    try {
    Thread.sleep(500);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    });

    tA.start();
    tB.start();
    }



    Yield   

    线程让步  不会释放锁。让一个线程执行yield方法后,就会进入就绪状态,让出时间片让其他线程执行,sleep和join是进入阻塞状态。而且yield方法还与线程优先级有关,当某个线程调用yield方法时

    就会从运行状态转换到就绪状态,CPU从就绪线程队列选择一个优先级更高或者相同优先级的线程去执行。这也就意味着如果多线程的优先级是一样的,该线程调用yield方法后,也会再一次获得cpu继续去执行




    static void testYield() {
    new Thread(()->{
    for(int i=0; i<100; i++) {
    System.out.println("A" + i);
    if(i%10 == 0) Thread.yield();


    }
    }).start();

    new Thread(()->{
    for(int i=0; i<100; i++) {
    System.out.println("------------B" + i);
    if(i%10 == 0) Thread.yield();
    }
    }).start();
    }

    
    
    工作中可能用到的不多,纯粹是为了再次理解基本方法学习下,哈哈!

  • 相关阅读:
    利用qq设置个性化的域名邮箱
    中小企业为什么要上HR系统
    JAVA设计模式之:命令模式
    hdoj 1251 统计难题 【字典树】
    哈希表(散列)HashTable实现
    HDU 1711 Number Sequence(字符串匹配)
    回溯法之求n个集合的幂集
    微软Azure云计算服务主导全球
    jQuery选择器
    MyEclipse激活步骤
  • 原文地址:https://www.cnblogs.com/btdxqz/p/12711526.html
Copyright © 2011-2022 走看看