[JAVA学习笔记-91]关于可重入函数



到目前为止,接触过两种可重入对象,可重入函数,与可重入锁。

虽然都是可重入,但概念上应该有所区分。

可重入锁,指的此lock可以多次重复获取,例如reentrantLock对象,同一个线程在持有该锁后,可重复获取该锁,而不需要再竞争,也不会造成自我死锁,只是锁的
持有计数增加,并且持有者释放锁的次数要与获取锁匹配,否则该锁将一直被持有,造成资源不释放。

可重入函数,指的是次函数可支持中断,而保证执行结果正确。这个可重入是对线程调度而言的,函数执行被中断后,调度器执行其他的任务,然后在某个时刻重新
调度执行先前任务的线程,此时函数被重新进入,继续执行。
如果一个函数只使用local variables,即它的调用栈与其它函数分离,则此函数是可重入的;如果一个函数引用了公共变量(global/static variables),
则需要配合同步措施来保证数据的正确性。


与之对应还有一个线程安全的概念,线程安全简单讲就是在多线程场景下可用,可以是函数可用,队列可用,所谓可用也就是在多线程场景下,不会产生无法预测,不
确定的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值