Java里Executor、shutdown()、Thread.yield()、join()总结

Executor:
Eexecutor作为灵活且强大的异步执行框架,其支持多种不同类型的任务执行策略,提供了一种标准的方法将任务的提交过程和执行过程解耦开发,基于生产者-消费者模式,其提交任务的线程相当于生产者,执行任务的线程相当于消费者,并用Runnable来表示任务,Executor的实现还提供了对生命周期的支持,以及统计信息收集,应用程序管理机制和性能监视等机制。
shutdown():
当线程池调用该方法时,线程池的状态则立刻变成SHUTDOWN状态,以后不能再往线程池中添加任何任务,否则将会抛出RejectedExecutionException异常。但是,此时线程池不会立刻退出,直到添加到线程池中的任务都已经处理完成,才会退出。
Thinking in java:(shutdown())
对shutdown()方法的调用可以防止新任务被提交给这个Executor,当前线程(在本例中,即驱动main()的线程)将继续运行在shutdown()被调用之前提交的所有任务。。这个程序将在Executor中的所有任务完成之后尽快退出。
Thread.yield():
线程让步。使用了这个方法之后,线程会让出CPU执行权,让自己或者其它的线程运行。也就是说,当前线程调用yield()之后,并不能保证:其它具有相同优先级的线程一定能获得执行权,也有可能是当前线程又进入到“运行状态”继续运行。
join():
线程实例的join()方法可以被用来join到线程执行的开始和其他线程执行的结束,所以直到其他线程运行结束这个线程才会执行。如果join的方法在线程实例中被调用,当前运行的线程会被堵塞,直到线程实例运行完成。
如中线程a中调用线程b的join方法,这时线程a就会进入阻塞状态,直到线程b执行完成。这样就可以使并行的线程串行化的执行。

你可能感兴趣的:(java)