JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

控制线程的执行顺序

wys521 2025-01-02 19:49:12 精选教程 20 ℃ 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(); //缓存线程池


本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表