
java并发随笔
Yangshiwei....
好好努力
展开
-
进程,线程,管程,协程
转载 2022-02-10 23:24:59 · 337 阅读 · 0 评论 -
一些死锁的认识
死锁的定义一个线程无限期在等待另一个线程所占用并且永远不会释放的资源。当线程推进顺序不当或者是竞争资源时会引起死锁。避免死锁的几个常见方法1、避免一个线程同时获取多个锁。 2、避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源。 3、尝试使用定时锁,使用lock.tryLock(timeout)来替代使用内部锁机制。 4、对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败的情况。...原创 2022-02-09 22:43:00 · 627 阅读 · 0 评论 -
共享内存和消息传递
在命令式编程 中,线程之间的通信机制有两种:共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过发送消息来显式进行通信。 举个例子,我们在一间实验室里进行实验,所有人围在一张桌子上进行实验。这就是共享内存,桌子上的东西是有限且唯一的,所以我们每个人进行实验时都要注意不要同时操作某一个物品。 由于疫情影响,我...原创 2022-02-09 22:36:00 · 735 阅读 · 0 评论 -
乐观锁与悲观锁
乐观锁:也就是不加锁顾名思义,他很乐观,总是假设最好情况。所以总是觉得别人拿的时候不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据悲观锁:加锁解决问题和乐观锁相反,他总是假设最坏情况。每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。常见的类锁,行锁,静态锁都属于他。一个小例子如图,现在有两个相同的线程在执行value++, 并对应存到内存乐观锁,可以在内存的value中加个版本原创 2022-02-03 21:47:12 · 368 阅读 · 0 评论