章
目
录
本文重点讲解Java并发编程:JUC概述相关内容,讲解相关JUC相关的概念知识。
1.JUC简介
JUC是java.util.concurrent
工具包的简称,这是一个处理线程的工具包,JDK1.5开始出现,在此包中增加了在并发编程中很常用的工具类,其目的是为了更好的支持高并发任务。
2.进程和线程的概念
进程概念
进程(process)是计算机程序中关于某数据集合的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
在当代面向线程设计的计算机结构中,进程是线程的容器。
程序是指令、数据及其组织形式的描述,进程是程序的实体。
线程概念
线程(thread)是操作系统能够进行调度的最小单位。它被包含在进程之中,是进程中的实际运行单位。
一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
总结来讲
- 进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程是资源分配的最小单位。
- 线程:系统分配处理器时间资源的基本单位,或者说进程内独立执行的一个单元执行流。线程是程序执行的最小单位。
更详细的请看这篇《Java多线程:线程和进程的概念及区别》文章!
3.线程的状态
1、JDK1.5 之后,线程的状态变成了6种,也就是下面Thread.State枚举类中的这6种状态,要想更具体了解这6种状态的关系,请看《Java多线程:线程的生命周期》这篇文章!
public enum State {
NEW, //新建
RUNNABLE, //准备就绪
BLOCKED, //阻塞
WAITING, //等待,一直等
TIMED_WAITING, //等待,逾时不候
TERMINATED; //终结
}
2、 wait/sleep的区别
- sleep是Thread的静态方法;wait是Object的方法,任何对象实例都能调用wait方法。
- sleep不会释放锁,它也不需要占用锁;wait会释放锁,但调用它的前提是当前线程占有锁(即代码要在synchronized中)。
- 它们都可以被interrupted方法中断。
4 并发和并行含义及区别
1、并发:
- 并发是指两个或多个事件在同一时间间隔发生。
- 并发侧重于在同一实体上。
- 并发在一台处理器上“同时”处理多个任务。
2、并行:
- 并行是指两个或者多个事件在同一时刻发生。
- 并行侧重于在不同实体上。
- 并行在多台处理器上同时处理多个任务。
5 管程
管程(monitor),是一种同步机制,保证在某一时间段,只有一个线程在访问被保护的数据或代码。
JVM同步是基于进入和退出的,这是使用管程对象来实现的。
6 用户线程和守护线程
1)用户线程:平时用到的普通线程均是用户线程,当在Java程序中创建一个线程,它就被称为用户线程。
注意:如果主线程结束,但是用户线程还存在,此时JVM不会退出。
2)守护线程:是个服务线程,准确地来说就是服务其他的线程。比如垃圾回收线程。
注意:如果没有用户线程了,只有守护线程,JVM会退出。
总结
以上就是Java并发编程:JUC概述的全部内容,希望对你有帮助!