Java5 并发线程学习[Java编程]
本文“Java5 并发线程学习[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在Java5之后,并发线程这块发生了根本的改变,最重要的莫过于新的启动、调度、管理线程的一大堆API了.在Java5今后,通过Executor来启动线程比用Thread的start()更好.在新特点中,可以很简单掌握线程的启动、履行和关闭历程,还可以很简单利用线程池的特点.
1、成立任务
任务就是一个实现了Runnable接口的类.
成立的时刻实run办法便可.
2、履行任务
通过java.util.concurrent.ExecutorService接口对象来履行任务,该接口对象通过工具类java.util.concurrent.Executors的静态办法来成立.
Executors此包中所定义的 Executor、ExecutorService、ScheduledExecutorService、ThreadFactory 和 Callable 类的工厂和实用办法.
ExecutorService供应了管理终止的办法,以及可为跟踪一个或多个异步任务履行情况而生成 Future 的办法. 可以关闭 ExecutorService,这将招致其终止承受新任务.关闭后,执路程序将最后终止,这时没有任务在履行,也没有任务在等候履行,并且无法提交新任务.
executorService.execute(new TestRunnable());
1、成立ExecutorService
通过工具类java.util.concurrent.Executors的静态办法来成立.
Executors此包中所定义的 Executor、ExecutorService、ScheduledExecutorService、ThreadFactory 和 Callable 类的工厂和实用办法.
比方,成立一个ExecutorService的实例,ExecutorService实际上是一个线程池的管理工具:
ExecutorService executorService = Executors.newCachedThreadPool();
ExecutorService executorService = Executors.newFixedThreadPool(3);
ExecutorService executorService = Executors.newSingleThreadExecutor();
2、将任务增添到线程去履行
当将一个任务增添到线程池中的时刻,线程池会为每个任务成立一个线程,该线程会在之后的某个时刻自动履行.
3、关闭履行服务对象
executorService.shutdown();
4、综合实例
package concurrent;
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * Created by IntelliJ IDEA. * * @author leizhimin 2008-11-25 14:28:59 */ public class TestCachedThreadPool { public static void main(String[] args) { // ExecutorService executorService = Executors.newCachedThreadPool(); ExecutorService executorService = Executors.newFixedThreadPool(5); // ExecutorService executorService = Executors.newSingleThreadExecutor(); for (int i = 0; i < 5; i++) { executorService.execute(new TestRunnable()); System.out.println("************* a" + i + " *************"); } executorService.shutdown(); } } class TestRunnable implements Runnable { public void run() { System.out.println(Thread.currentThread().getName() + "线程被调用了."); while (true) { try { Thread.sleep(5000); System.out.println(Thread.currentThread().getName()); } catch (InterruptedException e) { e.printStackTrace(); } } } } |
运行后果:
************* a0 ************* ************* a1 ************* pool-1-thread-2线程被调用了. ************* a2 ************* pool-1-thread-3线程被调用了. pool-1-thread-1线程被调用了. ************* a3 ************* ************* a4 ************* pool-1-thread-4线程被调用了. pool-1-thread-5线程被调用了. pool-1-thread-2 pool-1-thread-1 pool-1-thread-3 pool-1-thread-5 pool-1-thread-4 pool-1-thread-2 pool-1-thread-1 pool-1-thread-3 pool-1-thread-5 pool-1-thread-4 ...... |
以上是“Java5 并发线程学习[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |