美文网首页
控制线程的执行顺序

控制线程的执行顺序

作者: 雪侯_edeb | 来源:发表于2020-06-09 23:39 被阅读0次

    在Java多线程中通常来说,在执行线程时,如果要保证线程的执行顺序,可以使用join和Executorservice

    (1)对于join的作用主要时在CPU进行调度时,让主线程等待子线程执行结束后才往下继续执行

    比如:

    三个线程:

    Thread t1 = new Thread(new Runnable(){ public void run(){}});

    Thread t2 = new Thread(new Runnable(){ public void run(){}});

    Thread t3 = new Thread(new Runnable(){ public void run(){}});

    如果要保证线程执行顺序,可以使用join来进行控制(t1.join())

    其实join方调用的就是Object类里的wait方法

    JDK源码如下:

    在运行时,mian方法就是一个主线程, 通过创建子线程,这里在创建子线程时由几个状态(新建,就绪(启动Thread时)),在调用start()方法后,线程由新建->就绪后,由CPU调度时由就绪->运行,这时通过调用t1.join()时,会让当前的线程进行等待(即当前运行的主线程进行等待),直到线程t1执行结束后再唤醒主线线程继续往下执行。

    (2)使用Executorservice线程池进行操作,

    ExecutorService executorService = Executors.newSingleThreadExecutor(); //创建单个线程池进行操作,这个其实就是把线程放到队列里,实现FIFO排队。

    ExecutorService还有其他方法,

    比如 newFixedThreadPool(); //创建固定大小的线程池

    newCachedThreadPool(); //缓存线程池

    相关文章

      网友评论

          本文标题:控制线程的执行顺序

          本文链接:https://www.haomeiwen.com/subject/jwqktktx.html