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

如何控制线程的执行顺序

作者: 我还是老油条 | 来源:发表于2019-04-17 22:31 被阅读0次

废话不多少,直接上代码:如图

创建三个线程:thread1,thread2,thread3

执行main方法,猜猜结果?

结果是没有顺序的,这是因为启动一个线程,并不是立马去执行,它要等cpu的调度,线程切换是随机的,cpu随机分片,所以没有顺序

那么有什么方法可以解决呢?

它就是join.

看下结果:

有顺序了吧,问题解决了,可是为什么呢?

join的作用:让主线程等待子线程结束后才能运行。

在这里:main 就是主线程,它会等待thread1.执行完毕后才运行。

如图所示,join 让主线程休眠,等子线程结束才运行,这样就保证了顺序

接下来再看看join源码:

不传参数,默认走的是这个wait,点进去看,它是走的object的wait方法,而且是native的。

这样就彻底弄明白join 完成线程控制的原理。

再说另一种方法,在java1.5以后, concurrent 包的流行,ExcutorService的出现也能解决此问题

看代码:

结果也是一样的,那是因为newSingleThreadExecutor,是先进先出的队列形式(FIFO),所以也可以保证执行顺序。

相关文章

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

    线程的执行是随机的,由CPU控制,但是我们可以通过以下的方法对多线程进行可控顺序的执行: 1.使用join方法:让...

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

    方法一:join join方法:让主线程等待子线程运行结束后再继续运行 方法二:Excutors.newSingl...

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

    我们先来看下面的程序: 以上运行程序的结果是什么呢? 有人说结果如下: main开始运行thread1运行thre...

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

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

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

    废话不多少,直接上代码:如图 创建三个线程:thread1,thread2,thread3 执行main方法,猜猜...

  • 控制线程的执行顺序

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

  • 控制线程的执行顺序

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

  • 多线程

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

  • 多线程知识点更新

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

  • Java面试-多线程问题整理

    1.如何让线程顺序执行: 1.thread.join 方法,可以让主线程等待子线程执行完之后,再执行。 jion方...

网友评论

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

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