位置:org.springframework.util
�实现接口:java.io.Serializable
继承类:无
作用:提供定制化创建新线程实例的方法,可作为其他线程工厂类的基类
一、效果
可以通过继承CustomizableThreadCreator来创建需要定制的线程工厂类,生产Thread。
@Testpublic void test1(){MyThreadFactroy mf = new MyThreadFactroy();mf.setThreadNamePrefix("[线程");Thread thread1 = mf.createThread(new implRunnable());Thread thread2 = mf.createThread(new implRunnable());Thread thread3 = mf.createThread(new implRunnable());thread1.start();thread2.start();thread3.start();}class MyThreadFactroy extends CustomizableThreadCreator{}class implRunnable implements Runnable{public void run() {for (int i = 0; i < 5; i++) {System.out.println(Thread.currentThread().getName() + "]running,count:" + i);}}}/*[线程1]running,count:0[线程2]running,count:0[线程2]running,count:1[线程2]running,count:2[线程3]running,count:0[线程3]running,count:1[线程3]running,count:2[线程3]running,count:3[线程3]running,count:4[线程1]running,count:1[线程1]running,count:2[线程1]running,count:3[线程1]running,count:4[线程2]running,count:3[线程2]running,count:4*/
二、API
/*用于创建新线程的模板方法。默认实现使用适当的线程名称为给定的Runnable创建新的线程。*/public Thread createThread(Runnable runnable) {Thread thread = new Thread(getThreadGroup(), runnable, nextThreadName());thread.setPriority(getThreadPriority());thread.setDaemon(isDaemon());return thread;}// 设置该工厂是否应该创建守护程序线程。public void setDaemon(boolean daemon) {this.daemon = daemon;}// 指定应该在其中创建线程的线程组。。public void setThreadGroup(@Nullable ThreadGroup threadGroup) {this.threadGroup = threadGroup;}
三、总结
CustomizableThreadCreator提供了基础的线程API,如设置优先级、设置是否为守护进程、设置线程组、设置线程名前缀,在Spring中作为其他线程工厂类的基类。
四、补充
1.什么是守护线程
参见另一篇文章:[Java] 守护线程(Daemon)
2.什么是线程组
参见另一篇文章: [Java] 线程组(ThreadGroup)
3.Thread中run()和start()的区别
- start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行。
- run()方法当作普通方法的方式调用,程序还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行。
