threadfactory的作用和原理是什么?

XIAO 2020-05-11 16:07:50 java常见问答 8604

对java感兴趣的小伙伴们大概都了解线程,但是你知道吗,threadfactory在其中扮演了十分重要的角色呢,所以你知道threadfactory的作用和原理是什么吗?我们一起来看看吧。

异常捕获如下所示:

public class LoggerThreadFactory implements ThreadFactory
{
    @Override
    public Thread newThread(Runnable r)
    {
        Thread t = new Thread(r);
        t.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler()
        {
            @Override
            public void uncaughtException(Thread t, Throwable e)
            {
                LoggerFactory.getLogger(t.getName())
                    .error(e.getMessage(), e);
            }
        });
        return t;
    }
}

设置线程名,计数等等:

public WorkerThreadFactory implements ThreadFactory
{
    private int counter = 0;
    private String prefix = "";
    public WorkerThreadFactory(String prefix)
    {
        this.prefix = prefix;
    }
    public Thread newThread(Runnable r)
    {
        return new Thread(r, prefix + "-" + count++);
    }
}

设置thread属性:

public class DaemonThreadFactory implements ThreadFactory
{
    public Thread newThread(Runnable r)
    {
        Thread t = new Thread(r);
        t.setDaemon(true);
        return t;
    }
}

当线程放入池里,就会调用ThreadFactory的newThread()进行封装。

最简单的ThreadFactory实现如下所示:

public class SimpleThreadFactory implements ThreadFactory
{
    @Override
    public Thread newThread(Runnable r)
    {
        return new Thread(r);
    }
}

上述线程工厂,只是创建了一个新线程,其他什么都没干。实际使用时,一般不会创建这么简单的线程工厂。

好了,以上就是本篇文章的所有内容了,还想了解更多java常见问答相关知识,记得马上来关注本站最新消息哦。

推荐阅读:

进程调度的算法是指什么?有何作用? 

为什么要复制ArrayList扩容?有何作用? 

Synchronized及其实现原理有哪些?