初探JUC

Java技术分享(初探JUC)

开篇:
作者计划分3-5期讲解一下JUC是什么。JUC是面试高频问题,JDK 1.5开始出现的,通常面试官针对JUC问的问题是平时工作中不常接触,也不太好理解的。所以作者打算用较为通俗的语言讲解JUC,希望读者可以较好的理解。

正篇:
什么是JUC?
JUC是java.util.concurret在并发编程中使用的工具类。在进入JUC源码分析之前,我们先来解答几个面试常见问题:
在这里插入图片描述
<1>什么是线程,什么是进程:
(1)进程:
一个程序,例:qq.exe就是一个进程,进程是指程序的集合。一个进程往往可以包含多个线程,至少包含一个!
(2)线程:
例:开启qq邮箱,收到一封邮件,这就是有一个线程在负责收邮件,你在回复邮件的时候,就有一个线程在负责发送邮件。通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统多个程序间并发执行的程度。

<面试>Java默认有几个线程? 两个:mian线程、GC线程
对于Java而言:Thread、Runnable、Callable可以开启线程,那么Java可以真的开启线程吗?答案是不可以的。源码中start()方法是调用native本地方法,实际上是调用C++,因为java不能直接操作内存,所以不能真正开启线程。

在这里插入图片描述
<2>线程有几个状态:

在这里插入图片描述
<3>Synchronized和Lock的区别

(1)Synchronized 内置的Java关键字, Lock 是一个Java类

(2)Synchronized 无法判断获取锁的状态,Lock 可以判断是否获取到了锁

(3)Synchronized 会自动释放锁,lock 必须要手动释放锁!如果不释放锁,会造成死锁问题。

(4)Synchronized 线程 1(获得锁,阻塞)、线程2(等待,傻傻的等);Lock锁就不一定会等待下去;

(5)Synchronized 可重入锁,不可以中断的,非公平;Lock ,可重入锁,可以 判断锁,非公平(可以自己设置);

(6)Synchronized 适合锁少量的代码同步问题,Lock 适合锁大量的同步代码!

<4>Volatile关键字三大特性

(1)保证可见性

(2)不保证原子性

(3)避免指令重排

具体上述三个特性解释,并抛出问题i++是线程安全的吗?会在下篇文章进入源码分析并详细解答。

Tips:微信公众号搜索:Java段子手
回复jdk8 可获得jdk8 源码手册~

下篇预告:JUC8锁现象。

下篇文章见~

一个被Java耽误的段子手

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值