Java 多线程开发细节补充

2020-11-17 0 By admin

一、线程分组

如果有若干个正在做同一个工作的线程,为了方便管理,可以对这些线程进行分组,从而把同一组的线程作为一个整体进行操作。
在线程 Thread 的构造方法中,可以指明线程属于哪一个分组:
public Thread(ThreadGroup group,Runnable target)
其中,参数group 可以指明该线程属于哪一个线程组。

二、线程数目的确定

在并发编程过程中,有一个疑问:在程序中创建多少个线程最合适?创建多少个线程才能使程序性能运行最佳?
线程数目的多少对程序性能有一定的影响。
数目少了,处理器会处于闲置状态,浪费资源。
数目多了,多余的线程不能马上执行,浪费了软件资源。
在 JAVA 中提供了相关的方法,可用于获取处理器可以同时处理的最大线程数:
int nthreads = Runtime.getRuntime().availableProcessors()

三、线程本地化

类 ThreadLocal 是一个非常有用的类。 JAVA 通过类 ThreadLocal 实现线程本地对象,使用类 ThreadLocal 将会使变量在每个线程的私有区域内有一个副本,每个线程都可以相对独立的改变自己的副本,而不会影响到其他线程的副本。值得说明的是,ThreadLocal 并不是一个线程,而是表示线程的一个局部变量。
ThreadLocal 类提供了方法 set()get() 用于设置和读取线程的本地值。一个线程首次获取一个线程本地对象值的时候将调用 initialValue() 方法,该方法用于对每个线程对象进行初始化。