ThreadFactory

来源:互联网 发布:wind数据库多少钱 编辑:程序博客网 时间:2024/05/24 06:26

(1)作用

          我们通常要使用线程来执行任务,任务通过Runnable定义然后new 一个Thread来进行执行

          假如我们要改变一个Thread的名称,那么我们可以在new Thread的时候设置名称

          那么如果我们需要对多个线程 都改名,难道每次new都要定义吗?

          实际上我们可以通过ThreadFactory来专门生成Thread,对于Thread的属性我们可以在其中进行统一定义


(2)实例

public class ThreadFactoryTest {@Testpublic void test() {MyThreadFactory factory = new MyThreadFactory();for (int i=0; i<3; i++) {factory.newThread(new MyTask()).start();}}}class MyTask implements Runnable{public void run() {System.out.println(Thread.currentThread().getName());}}class MyThreadFactory implements ThreadFactory{private AtomicInteger index = new AtomicInteger(0);public Thread newThread(Runnable r) {Thread thread = new Thread(r, "myThread"+index.getAndIncrement());return thread;}}

        结果为:

myThread0myThread1myThread2

(3)说明

                1.如果需要新的线程,我们直接通过newThread方法即可

                2.这是单独使用,也可以配合线程池使用,这样线程池中的所有线程都是我们定义的

ExecutorService executor = Executors.newFixedThreadPool(3, new MyThreadFactory());for (int i = 0; i < 5; i++) {executor.submit(new MyTask());}


0 0
原创粉丝点击