工厂模式是最常使用的设计模式之一。 它是一构建模式,目标是开发一个对象,该对象的任务是创建其他一个或多个类的对象。 这样当我们想创建一个那些类的对象时,使用工厂,而不是 new 操作符。
使用工厂创建对象有几个好处:
Java 提供了 ThreadFactory 接口来实现线程对象工厂。Java concurrency API 的一些辅助类使用线程工厂来创建线程。
线程工厂类 (MyThreadFactory)
public class MyThreadFactory implements ThreadFactory
private int counter; private String name; private List<String> stats; public MyThreadFactory(String name) { counter = 0; this.name = name; stats = new ArrayList<String>(); }
@Override public 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 getStatistics() { StringBuffer buffer = new StringBuffer(); for (String stat : stats) { buffer.append(stat); buffer.append("\n"); } return buffer.toString(); }
控制类 (Main)
MyThreadFactory factory = new MyThreadFactory("MyThreadFactory"); Task task = new Task();
Thread thread; System.out.printf("Starting the Threads\n"); for (int i = 0; i < 10; i++) { thread = factory.newThread(task); thread.start(); }
System.out.printf("Factory stats:\n"); System.out.printf("%s\n", factory.getStatistics());