day19
线程组
线程组:将属于同一类的线程划分到同一组中,可以直接对线程组进行设置。
ThreadGroup
构造方法:
ThreadGroup(String name) 构造一个新的线程组。
class MyThread1 extends Thread{
public MyThread1() {
}
public MyThread1(ThreadGroup group, String name) {
//父类的构造方法Thread(ThreadGroup group, String name)
super(group, name);
}
@Override
public void run() {
System.out.println("这是帅哥线程");
}
}
//创建线程组,组名自定义
ThreadGroup tg1 = new ThreadGroup("帅哥组");
ThreadGroup tg2 = new ThreadGroup("美女组");
//创建多个线程对象,分配到线程组中
// MyThread1 t1 = new MyThread1();
// t1.setName("李刚");
//Thread(ThreadGroup group, String name)
//分配一个新的 Thread对象。
MyThread1 t1 = new MyThread1(tg1, "李刚");
MyThread1 t2 = new MyThread1(tg1, "钱志强");
MyThread1 t3 = new MyThread1(tg2, "李世博");
MyThread1 t4 = new MyThread1(tg2, "杨珊珊");
线程池:ThreadPool
Executors:
static ExecutorService newCachedThreadPool() 创建一个根据需要创建新线程的线程池,但在可用时将重新使用以前构造的线程。
static ExecutorService newFixedThreadPool(int nThreads) 创建一个线程池,该线程池重用固定数量的从共享无界队列中运行的线程。
static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) 创建一个线程池,可以调度命令在给定的延迟之后运行,或定期执行。
public class ThreadPoolDemo1 {
public static void main(String[] args) {
//创建一个固定大小的线程池
ExecutorService pool = Executors.newFixedThreadPool(2);
//Future<?> submit(Runnable task);
pool.submit(new MyRunnable());
pool.submit(new MyRunnable());
//可用时将重新使用以前构造的线程。
pool.submit(new MyRunnable());
//创建了一个匿名内部类Callable
浙公网安备 33010602011771号