JUC —— 入门

本文深入探讨了Java并发编程,介绍了JUC(Java Util Concurrency)工具包的重要性,对比了普通线程与Callable任务的效率。详细阐述了线程的五种状态,并解析了wait和sleep的区别。此外,还讨论了并发与并行的概念,强调了并发编程的本质是充分利用CPU资源。
摘要由CSDN通过智能技术生成

什么是JUC?

java.util工具包
业务:普通的线程代码 Thread
Runnable 没有返回值,效率相比于Callable相对较低

线程和进程

进程: 一个程序,如QQ.exe等,程序的集合
一个进程往往可以包含多个线程,至少包含一个
线程: 一个进程中的一些功能是通过线程来实现的

注意:

  • java默认有几个线程? 2个,一个main线程,一个GC线程;
  • java真的可以开启线程吗? 不可以,Thread的start方法调用了本地方法private native void start0();,调用底层的C++,java无法直接操作硬件

并发和并行

并发: 多线程操作同一个资源

  • cpu一核,模拟出来多条线程,快速交替执行

并行: 多线程操作多个资源

  • cpu多核,多个线程可以同时执行

并发编程的本质:充分利用cpu的资源

线程有几个状态

  • NEW 新生
  • RUNNABLE 运行
  • BLOCKED 阻塞
  • WAITING 等待
  • TIMED_WAITING 超时等待(过期不候)
  • TERMINATED 终止

wait / sleep区别

区别:

  • 来自不同的类,wait-Object;sleep-Thread
  • 关于锁的释放,wait会释放锁;sleep不会释放锁
  • 使用的范围不同,wait必须在同步代码块中使用;sleep可以在任何地方使用
  • 是否需要捕获异常,wait不需要捕获;sleep必须捕获异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值