Java 的多线程原理和基本概念
1. Java 多线程的基本概念:程序 - 进程 - 线程
- 程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。
- 进程(process)是程序的一次执行过程,或是正在运行的一个程序。动态过程:有它自身的产生、存在和消亡的过程。
① 如:运行中的QQ,运行中的MP3播放器
② 程序是静态的,进程是动态的 - 线程(thread),进程可进一步细化为线程,是一个程序内部的一条执行路径。
① 若一个程序可同一时间执行多个线程,就是支持多线程的
2. 进程与多线程
- 区分程序是不是多线程的,就看程序能不能用一条执行线串起来,能串起来的,就是单线程的,反之则为单线程。
3.在什么时候,我们需要用到多线程呢?
- 程序需要同时执行两个或多个任务。
- 程序需要实现一些需要等待的任务时,如用户输入、文件读写操作、网络操作、搜索等。
- 需要一些后台运行的程序时。
4. 使用多线程的好处
-
背景:只使用单个线程完成多个任务(调用多个方法),肯定比用多个线程来完成用的时间更短,为何仍需多线程呢?
-
多线程程序的优点:
① 提高应用程序的响应。对图形化界面更有意义,可增强用户体验。
② 提高计算机系统CPU的利用率
③ 改善程序结构。将既长又复杂的进程分为多个线程,独立运行,利于理解和修改
5.使用多线程的弊端
- 使用多线程同步机制,由于同一时间只能有一个线程访问共享数据,效率变低了。
6. 线程的分类
Java中的线程分为两类:一种是守护线程,一种是用户线程。
- 它们在几乎每个方面都是相同的,唯一的区别是判断JVM何时离开。
- 守护线程是用来服务用户线程的,通过在start()方法前调用==thread.setDaemon(true)==可以把一个用户线程变成一个守护线程。
- Java垃圾回收就是一个典型的守护线程。
- 若JVM中都是守护线程,当前JVM将退出。