五. 线程组:JAVA中ThreadGroup表示线程组,可以在创建Thread时在构造函数中指定线程组,不指定默认为父线程的线程组。线程组提供activeCount()、interrupt()、isDaemon、setDaemon()等方法可以操作线程组中所有线程。
六. 线程异常特殊处理机制:可以通过Thread的static setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)或者setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)设置异常处理器,线程组ThreadGroup实现了Thread.UncaughtExceptionHandler接口,故将作为默认的异常处理器。注意这里的异常处理跟catch不同,这里的handler处理完异常后会自动传递给上级调用者。
七. 线程池:线程池在启动时创建大陆空闲线程,可提交Runnable或者Callable对象给线程池执行,执行完毕后线程不死亡而变成空闲线程。线程池用于减少创建和销毁线程的开销。线程池执行任务步骤如下:
1. 调用Executors类静态工厂方法创建ExecutorService对象,代表线程池;
2. 创建Runnable或者Callable类实例,通过ExecutorServicede的Submit方法提交,返回Future对象,如果提交的是Runnable,则Future返回null。
3. 调用ExecutorService的shutdown()可以关闭线程池.
八. ThreadLocal类:表示Thread Local Variable,即线程局部变量的意思,提供T get();void remove();void set(T value)三个方法,ThreadLocal对象只有一个,但每个线程都有副本,相互不影响。
九. 集合:1. Collections提供静态方法(synchronized开头)可以将非线程安全集合包装成线程安全集合。2. Concurrent开头的集合类是线程安全的集合。