Java并发学习之十——用线程工厂创建线程
来源:互联网 发布:薛之谦主持的网络综艺 编辑:程序博客网 时间:2024/04/30 10:06
本文是学习网络上的文章时的总结,感谢大家无私的分享。
1、工厂模式是最有用的设计模式。它是一个创造模式,还有他的目的是创建一个或者几个类对象的对象。有了这个工厂,我们有这些优势集中创建对象:
更简单的改变了类的对象创建或者说创建这些对象的方式;
更简单的为了限制的资源限制了对象的创建。
更简单的生成创建对象的统计数据。
2、Java提供一个接口,ThreadFactory接口实现一个线程对象工厂
package chapter;import java.util.ArrayList;import java.util.Date;import java.util.Iterator;import java.util.List;import java.util.concurrent.ThreadFactory;public class MyTreadFactory implements ThreadFactory{private int counter;private String name;private List<String> stats;public MyTreadFactory(String name){counter = 0;this.name = name;stats = new ArrayList<String>();}@Overridepublic Thread newThread(Runnable r) {Thread t = new Thread(r,name+"_Thread_"+counter);counter++;stats.add(String.format("Created thread %d with name %s on %s\n", t.getId(),t.getName(),new Date()));return t;}public String getStatuts(){StringBuffer buffer = new StringBuffer();Iterator<String> it = stats.iterator();while(it.hasNext()){buffer.append(it.next());buffer.append("\n");}return buffer.toString();}}
package chapter;import java.util.concurrent.TimeUnit;public class Task12 implements Runnable{@Overridepublic void run() {try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}}}
package chapter;public class Main12 {/** * <p> * </p> * @author zhangjunshuai * @date 2014-8-25 下午6:58:42 * @param args */public static void main(String[] args) {MyTreadFactory factory = new MyTreadFactory("MyTreadFactory");Task12 task = new Task12();Thread thread;System.out.println("Starting the Threads ");for (int i = 0; i < 10; i++) {thread = factory.newThread(task);thread.start();}System.out.println("Factory stats:");System.out.printf("%s\n",factory.getStatuts());}}运行效果
0 0
- Java并发学习之十——用线程工厂创建线程
- 【Java并发学习】之线程的创建
- Java并发学习之一——线程的创建
- java并发——如何创建线程
- Java并发学习之三——线程的中断
- Java并发学习之七——守护线程
- 【JAVA并发学习三】创建线程对象
- Java并发编程(十)——线程池(2)
- Java线程(十):CyclicBarrier-用路障实现分阶段线程并发
- Java线程(十):CyclicBarrier-用路障实现分阶段线程并发
- Java并发——线程中断学习
- Java并发编程之线程管理(线程创建1)
- Java并发之——线程池
- 11.多线程学习--用线程工厂创建线程
- java学习笔记之线程并发库
- 【Java并发学习】之线程的同步
- Java并发之线程池的学习
- 【Java并发学习】之线程合作
- usaco shopping 模拟+dp
- XDOJ1255 - 数列游戏
- Linux CGI编程
- css - position:absolute和position:relative的区别
- HDU3723-Delta Wave(Catalan数+组合计数)
- Java并发学习之十——用线程工厂创建线程
- MySQL常见错误代码说明
- 耳机工程师谈Dirac: Dirac开创了用软件来实现HIFI的新思路
- POJ 3067—— Japan(树状数组)
- Ubuntu中CodeLite设置为中文
- 识别“百度权重”作弊的方法
- mysql启动问题access denied for user 'root'@'localhost'(using password:YES)
- ural Threeprime Numbers(dp)
- shell脚本不换行刷新数据