thread的几个常用方法的介绍

1. Thread.yield()

使当前线程从执行状态(运行状态)变为可执行态(就绪状态),为同一个优先级的线程让位,但是让位时间不确定。cpu会从众多的可执行态里选择,也就是说,当前也就是刚刚的那个线程还是有可能会被再次执行到的,并不是说一定会执行其他线程而该线程在下一次中不会执行到了。

public class MultiWrite {

    static int a = 0;

    public static void main(String[] args) throws Exception {
//        for (int i = 0; i <10 ; i++) {
//            new Thread(()->a +=1).start();
//        }
        Thread t = new Thread(() -> System.out.println(a = 1));
        //必须先开启线程,再执行join方法
        t.start();
       
        Thread.currentThread().yield();
        System.out.println(a);

    }
}

可能出现1,0和0,1的情况

2. Thread.join()

把指定的线程加入到当前线程中,可以将两个交替执行的线程合并为顺序执行的线程。
比如在B线程中执行线程A的join方法,a.join(),那么B线程就会暂停执行,先等A线程执行完毕,B线程再重新进入可运行状态

join方法中还可以设置时间a.join(1000),这样就让A执行规定时间。

public class MultiWrite {

    static  int a = 0;

    public static void main(String[] args) throws Exception{
//        for (int i = 0; i <10 ; i++) {
//            new Thread(()->a +=1).start();
//        }
        Thread t = new Thread(() -> System.out.println(a=1));
        //必须先开启线程,再执行join方法
        t.start();
        t.join();
        System.out.println(a);

    }
}

打印出1,1

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 3,022评论 1 18
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 2,527评论 1 15
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,095评论 0 13
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,932评论 0 10
  • 林炳文Evankaka原创作品。转载自http://blog.csdn.net/evankaka 本文主要讲了ja...
    ccq_inori阅读 687评论 0 4