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

控制线程的执行顺序

作者: 雪侯_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(); //缓存线程池

相关文章

  • 如何控制多线程执行的顺序?

    先看一段代码: 执行结果: 可以看到线程的执行顺序是随机的。查阅资料控制多线程执行顺序有以下两种方法: 方法1:调...

  • 控制线程的执行顺序

    通过join方法保证多线程的顺序性特性 join 让主线程等待子线程结束以后才能继续运行,执行流程如下: 通过线程...

  • 控制线程的执行顺序

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

  • 多线程

    [toc] 线程与进程 1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只...

  • 多线程知识点更新

    控制线程间的执行顺序 CyclicBarrier类 让一组线程等待至某种状态后全部执行关于CyclicBarrie...

  • GCD

    GCD线程执行的顺序控制 dispatch_group_t group = dispatch_group_crea...

  • 常用的GCD记录一下

    子线程并行 串行 主线程 串行队列 子线程 并行队列 子线程 栅栏函数 控制执行顺序 避免数据竞争 多线...

  • 线程基础

    线程与进程 线程:进程中负责程序执行的执行单元,线程本身依靠程序进行运行,线程是程序中的顺序控制流,只能使用分配给...

  • java多线程干货(一)

    线程与进程 1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给...

  • Java多线程基础

    线程与进程 线程:进程中负责程序执行的执行单元 线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程...

网友评论

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

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