欢迎来到天天文库
浏览记录
ID:30768960
大小:56.00 KB
页数:4页
时间:2019-01-03
《java并发编程中使用executors类创建和管理线程的用法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Java并发编程中使用Executors类创建和管理线程的用法这篇文章主要介绍了Java并发编程屮使用Executors类创建和管理线程的用法,文屮举了用其启动线程和设置线程优先级的例子,需要的朋友可以参考下1.类ExecutorsExecutors类可以看做一个“工具类”。援引JDK1.6API中的介绍:此包屮所定义的ExecutorsExecutorService>ScheduledExecutorService>ThreadFactory和Callable类的工厂和实用方法。此类支持以下各种方法:(1)创建并返回设置有常用配置字符串的ExecutorSer
2、vice的方法。(2)创建并返冋设置有常用配置字符串的ScheduledExecutorService的方法。(3)创建并返回“包装的”ExecutorService方法,它通过使特定于实现的方法不可访问来禁用重新配置。(4)创建并返冋ThreadFactory的方法,它可将新创建的线程设置为己知的状态。(5)创建并返回非闭包形式的Callable的方法,这样可将其用于需要Callable的执行方法中。通过这个类能够获得多种线程池的实例,例如可以调用newSingleThreadExecutorf)^得单线程的ExecutorService,调用newFixed
3、ThreadPool()获得固定大小线程池的ExecutorService»等等。拿到ExecutorServicenJ'以做的事情就比较多了,最简单的是用它來执行Runnable对象,也可以执行一些实现了Callable的对象。用Thread的start()方法没有返回值,如杲该线程执行的方法有返回值那用ExecutorService就再好不过了,可以选择submit()^invokeAII()或者invokeAny(),根据具体情况选择合适的方法即可。此类屮提供的一些方法有:1.1publicstaticExecutorServicenewCached
4、ThreadPool()创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能。1.2publicstaticExecutorServicenewFixedThreadPool(intnThreads)创建一个可重用固定线程数的线程池,以共享的无界队列方式來运行这些线程。1.3publicstaticExecutorServicenewSingleThreadExecutor()创建一个使用单个worker线程的Executor,以无界队列方式来运行该线程。这三个方法都可以配合
5、接口ThreadFactory的实例一起使用。并且返冋一个ExecutorService接口的实例。2.接口ThreadFactory根据需要创建新线程的对彖。使用线程工厂就无需再手工编写对newThread的调用了,从而允许应用程序使用特殊的线程子类、属性等等。此接口最简单的实现就是:classSimpleThreadFactoryimplementsThreadFactory{publicThreadnewThread(Runnabler){returnnewThread(r);}}1.接口ExecutorService该接口提供了管理终止的方法。2.创建标
6、准线程池启动线程4.1提供一个简单的实现Runnable接口的线程MyThread.javapackagecom.zj.www.visal58.comcurrency.executors;publicclassMyThreadimplementsRunnable{privateintcount=1,number;publicMyThread(intnum){number=num;System.out.println(HCreateThread-11+number);}publicvoidrun(){while(true){System.out.println("
7、Thread」+number+HrunH+count+Htime(s)H);if(++count==3)return;}}}这个线程会打印出相应的创建和执行信息。4.2使用CachedThreadPool启动线程CachedThreadPool.javapackagecom.zj.concurrency.executors;importjava.util.concurrent.ExecutorServgimportjava.util.concurrent.Executors;publicclassCachedThreadPool{publicstaticvoid
8、main(Strjng[
此文档下载收益归作者所有