文章预览
Java语音从开始就内置了对多线程的支持,线程是操作系统的最小单元,多个线程同时执行可以明显提升程序性能。但是过多的创建线程以及不正当的管理线程也容易造成问题。所以,认识并合理使用线程变成提升编码能力的必要途径。
什么是线程
操作系统在运行一个程序时,会为其创建一个进程。例如:启动一个Java程序,系统会创建一个Java进程。上文提到
操作系统的最小调度单元是线程
,线程也被称为
轻量级进程
,一个进程可以创建多个线程。这些线程都有各自的计数器、堆栈以及局部变量等属性,而且还能访问共享的内存变量。处理器在这些线程中高速切换,让我们感觉是多个线程同时执行。
举个例子吧,一个Java程序,从最开始的mian()方法开始执行,然后按照既定的逻辑执行,看似没有其它的线程参与,但是吧,Java程序本身就是一个多线程的程序。所以。。。
public class MultiThread{
public static void main(String[] args) {
// 获取Java线程管理MXBean
ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
// 不需要获取同步的monitor和synchronizer信息,仅获取线程和线程堆栈信息
ThreadInfo[] threadInfos = threadMXBean.dumpAllThreads(false, false);
// 遍历线程信息,仅打印线程ID和线程名称信息
for (ThreadInfo threadInfo : threadInfos) {
System.out.println("[" + threadInfo.getThreadId() + "] " + threadInfo.
getThreadName());
}
}
}
从以上代码可以看出来,Java程序执行,是main线程和多个其它线程同时运行。
为什么使用多线程
执行一个
“Hello World”
,却启动了那么多无关的线程,是不是意味着把简单的问题复杂化了?当然不是,正确使用多线程,可以带来很多好处哦。使用多线程的原因,有以下几点
-
更多的处理器核心
-
更快的响应时间
-
更好的编程模型
………………………………