java三个线程 顺序执行_如何保证多线程按顺序执行完成?

  • Post author:
  • Post category:java


我们知道线程执行时机是CPU时间片轮询策略决定的,那么有没有办法让线程按指定的顺序执行呢?下面就通过JAVA提供的两种API来实现。

1.首先定义三个线程对象,用来模拟多线程执行顺序。

static

Thread

thread1

=

new

Thread(new

Runnable()

{

@Overridepublic

void run() {

System.out.println(“1”);

}});

staticThreadthread2=newThread(newRunnable()

{

@Overridepublic

voidrun()

{

System.out.println(“2”);

}});

staticThreadthread3=newThread(newRunnable()

{

@Overridepublic

voidrun()

{

System.out.println(“3”);

}});

2.定义main方法:启动上面定义的函数

public static void

main(String[] args) throws

InterruptedException {

// thread1.start();

// thread1.join();

//这就是第一种让线程按指定顺序执行方法,threa1.join函数会使当前线程等待thread1线程执行完再执行,即main函数等thread1线程执行完再执行,

//join函数是synchronized的,当主线程调用thread1线程的join函数时,主线程就阻塞了,直到join方法结束,join函数调用了wait函数,等待子线程的结束。会唤醒主线程。

// thread2.start();

// thread2.join();

//同thread1一样

// thread3.start();

//第二张方法,使用创建单个线程的线程池,他会将提交的线程任务放入一个FIFO队,

//来保证按提交的线程任务顺序执行。队列是LinkedBlockingQueue类型的。

ExecutorService executor

=executors.newSingleThreadExecutor();

executor.submit(thread1);

executor.submit(thread2);

executor.submit(thread3);

executor.shutdown();

}



版权声明:本文为weixin_33279554原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。