Java 线程
c3VueXVl
这个作者很懒,什么都没留下…
展开
-
Java 阻塞锁
在这里我们使用了LockSupport.unpark()的阻塞锁。 该例子是将CLH锁修改而成。 阻塞锁的优势在于,阻塞的线程不会占用cpu时间, 不会导致 CPu占用率过高,但进入时间以及恢复时间都要比自旋锁略慢。 在竞争激烈的情况下 阻塞锁的性能要明显高于 自旋锁。 理想的情况则是; 在线程竞争不激烈的情况下,使用自旋锁,竞争激烈的情况下使用,阻塞锁。 import java.uti...原创 2018-08-12 20:37:08 · 703 阅读 · 0 评论 -
Java 自旋锁
使用 while 循环等待其他锁释放,而不是让出 CPU 时间片。(使用原子操作 CAS - atomic 类型数据) 可以减少线程切换,但可能长时间占用等待。(不可重入自旋锁、可重入自旋锁) 不可重入自旋锁 // 自旋锁,不可重入。因为如果同意线程,即run方法中,多次调用lock,则会死锁 class SpinLock { AtomicReference<Thread>...原创 2018-08-12 18:32:45 · 270 阅读 · 0 评论 -
Java 多线程工具类
一、CountDownLatch CountDownLatch 可用于倒计数 getCount():获取当前计数器剩余计数 countDown():倒计数器释放一次 await():用在多线程执行的后面,只有当 CountDownLatch 计数器全部释放,及 getCount() == 0 时,才会唤醒,继续执行 public class Test { public static...原创 2018-08-13 09:37:17 · 762 阅读 · 0 评论 -
Java 线程 - ThreadLocal
ThreadLocal:线程本地变量、线程本地存储。。。!为每个线程创建一个副本,让线程可以访问自己的副本,实现线程数据私有化。 下面的例子中,每个线程独有一份 ThreadLocal 副本,调用set后,每个线程中的数据互不影响。 ThreadLocal 维护一个 ThreadLocalMap,该 ThreadLocalMap 又关联 Thread 的 ThreadLocalMap 实例。 ...原创 2018-08-13 10:43:39 · 166 阅读 · 0 评论 -
Java - 事务
一、事务特性(ACID) 原子性:事务内所有的更改操作(先关联的所有数据操作),作为一个单元进行提交或者回滚。 一致性:事务保证数据库从一个一致状态变到另一个一致状态。(要么所有操作成功,要么所有操作回滚) 隔离性:与事务隔离性和隔离级别有关。 持久性:数据更改永久性。 二、事务操作 JDBC 事务、JTA事务、容器事务。 JDBC事务只能操作同一数据库,不可分布式。 JDB...原创 2018-08-13 17:01:26 · 172 阅读 · 0 评论