Java并发编程:JUC概述

培训教学 潘老师 6个月前 (11-12) 146 ℃ (0) 扫码查看

本文重点讲解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概述的全部内容,希望对你有帮助!


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/teach/11082.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】