Java并发编程

本文介绍了Java并发编程中的重要工具包JUC,详细阐述了线程与进程的区别,包括它们在资源分配、内存使用和系统开销上的差异。同时,讨论了线程的状态转换以及创建线程的四种方式。还对比了并发与并行的概念,并分析了wait()和sleep()的区别。最后,解释了run()和start()在线程执行中的不同作用。
摘要由CSDN通过智能技术生成

什么是JUC

java.util.concurrent在并发编程中使用的工具类
在这里插入图片描述

线程和进程

进程和线程之间的区别:
线程、进程基本概念:
进程是对运行程序的封装,是系统进行资源调度和分配的基本单位,实现了操作系统的并发;

    线程是进程的子任务,是cpu调度和分配的基本单位,用于保证程序的实时性,实现进程内部的并发,线程是操作系统可识别的最小执行的调度单位。

两者的区别:
1、一个线程只能够属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程依赖于进程而存在。
2、进程在执行的过程中拥有独立的内存单元,而多个线程共享进程的内存。
3、进程是资源分配的最小单位,线程是cpu调度的最小单位。
4、系统开销: 由于在创建或撤消进程时,系统都要为之分配或回收资源,如内存空间、I/o设备等。因此,操作系统所付出的开销将显著地大于在创建或撤消线程时的开销。类似地,在进行进程切换时,涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU环境的设置。而线程切换只须保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。可见,进程切换的开销也远大于线程切换的开销。

线程的状态:

线程的状态,如博客:
线程的状态
在这里插入图片描述
创建线程的4种方式:
继承Thread类和实现Runnable、线程池和
在这个地方需要区分下wait和sleep:
功能都是当前线程暂停

  • wait放开手去睡,放开手里的锁
  • sleep握紧手去睡,醒了手里还有锁

并行和并发

并发:在同一时间段,多个任务都在执行。宏观上是同时执行,微观上是顺序地交替执行。并发不一定等于并行。
并行:单位时间内,多个任务同时执行。

run()直接运行线程的主题,start()是启动线程的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值