JUC——ThreadFactory线程工厂类(四)

ThreadFactory线程工厂类

  在默认情况下如果要想创建一个线程类对象,大部分情况的选择是:直接通过子类为父类进行实例化,利用Runnable子类为Runnable接口实例化。

  或者直接调用Lambda表达式来进行处理,不过在多线程运行机制里面考虑到线程对象创建的合理性,juc专门提供了一个ThreadFactory工程程序类。

 

ThreadFactory定义

package java.util.concurrent;
public interface ThreadFactory{
     Thread newThread(Runnable r);
}

可以看出ThreadFactory只是取得Runnable启动的线程对象做了一个定义而已。

 

 

范例:使用ThreadFactory工厂程序类

package so.strong.concurrents;
import java.util.concurrent.ThreadFactory;

public class StrongDemo {
    public static void main(String[] args) throws Exception {
        Thread t = new SimpleThreadFactory().newThread(() -> {
            for (int x = 0; x < 10; x++) {
                System.out.println(Thread.currentThread().getName() + "、x = " + x);
            }
        });
        t.start();
    }
}

class SimpleThreadFactory implements ThreadFactory {
    private static int count = 0; //进行一个计数的操作

    public Thread newThread(Runnable r) {
        return new Thread(r, "线程 - " + count++);
    }
}

 

实际上对于接口对象我们一直在说:必须通过工厂类来取得实例化对象,所以对于ThreadFactory的设计看起来虽然多余,但是也符合标准化的设计。

 

posted @ 2018-04-25 09:41  iTermis  阅读(441)  评论(0编辑  收藏  举报