java并发编程基础-1.什么是线程

版权声明:技术太差文笔太差所以无版权可言 https://blog.csdn.net/weixin_37519752/article/details/84247298

java从诞生开始就明智的选择了内置多线程的支持,这使得java语言相对于同一时期的其他语言更具有明显得优势。线程作为操作系统调度的最小单元,多个线程能够同时执行,这将明显提升程序的性能,在多核环境中表现得更加明显。但是过多的创建线程和对线程的不当管理也容易造成问题。本章将着重介绍Java并发编程的基础知识,从启动一个线程到线程间不同的通信方式,最后通过简单得线程池力资连串联本章所介绍的内容。

一. 线程简介

1.什么是线程

现代操作系统在运行一个程序时,会为其创建一个进程。
例如启动一个Java程序,操作系统就会创建一个进程。现在操作系统调度的最小单元时线程,也叫轻量级进程(Light Weight Process),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器,堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。
一个java程序从main()方法开始执行,然后按照既定的代码逻辑执行,看似没有其他的线程参与,但实际上java程序天生就是多线程程序,因为执行main()方法的是一个名称为main的线程。下面使用JMX来查看一下一个普通的java程序包括那些线程。

public class MultiThread{
		public static void main(String[] args) {
				// 获取Java线程管理的MXBean
				ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
				// 不需要获取同步的monitor和synchronizer信息,仅获取线程和线程堆栈信息
				ThreadInfo[] threafInfos = threadMXBean.dumpAllThreads(false, false);
				// 遍历线程信息,仅仅打印线程ID和线程名称信息
				for (ThreadInfo threadInfo : threafInfos) {
					System.out.println("[" + threadInfo.getThreadId() + "]:" + threadInfo.getThreadName());
				}
			}
}

输出信息

[5]:Attach Listener
[4]:Signal Dispatcher
[3]:Finalizer
[2]:Reference Handler
[1]:main

可以看到,一个程序的运行不仅仅是main方法的运行,而是main线程和其他线程同时运行

猜你喜欢

转载自blog.csdn.net/weixin_37519752/article/details/84247298