上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 30 下一页
摘要: JDK Atomic开头的类,是通过 CAS 原理解决并发情况下原子性问题。 CAS 包含 3 个参数,CAS(V, E, N)。V 表示需要更新的变量,E 表示变量当前期望值,N 表示更新为的值。只有当变量 V 的值等于 E 时,变量 V 的值才会被更新为 N。如果变量 V 的值不等于 E ,说明 阅读全文
posted @ 2019-12-11 09:09 ConstXiong 阅读(795) 评论(0) 推荐(0) 编辑
摘要: ReadWriteLock,读写锁。 ReentrantReadWriteLock 是 ReadWriteLock 的一种实现。 特点: 包含一个 ReadLock 和 一个 WriteLock 对象 读锁与读锁不互斥;读锁与写锁,写锁与写锁互斥 适合对共享资源有读和写操作,写操作很少,读操作频繁的 阅读全文
posted @ 2019-12-11 09:07 ConstXiong 阅读(424) 评论(0) 推荐(0) 编辑
摘要: synchronized 竞争锁时会一直等待;ReentrantLock 可以尝试获取锁,并得到获取结果 synchronized 获取锁无法设置超时;ReentrantLock 可以设置获取锁的超时时间 synchronized 无法实现公平锁;ReentrantLock 可以满足公平锁,即先等待 阅读全文
posted @ 2019-12-10 09:52 ConstXiong 阅读(1480) 评论(0) 推荐(0) 编辑
摘要: 实现层面不一样。synchronized 是 Java 关键字,JVM层面 实现加锁和释放锁;Lock 是一个接口,在代码层面实现加锁和释放锁 是否自动释放锁。synchronized 在线程代码执行完或出现异常时自动释放锁;Lock 不会自动释放锁,需要再 finally {} 代码块显式地中释放 阅读全文
posted @ 2019-12-10 09:51 ConstXiong 阅读(701) 评论(0) 推荐(0) 编辑
摘要: 作用: synchronized 表示只有一个线程可以获取作用对象的锁,执行代码,阻塞其他线程。 volatile 表示变量在 CPU 的寄存器中是不确定的,必须从主存中读取。保证多线程环境下变量的可见性;禁止指令重排序。 区别: synchronized 可以作用于变量、方法、对象;volatil 阅读全文
posted @ 2019-12-10 09:50 ConstXiong 阅读(3774) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal 是线程本地存储,在每个线程中都创建了一个 ThreadLocalMap 对象,每个线程可以访问自己内部 ThreadLocalMap 对象内的 value。通过这种方式,避免资源在多线程间共享。 经典的使用场景是为每个线程分配一个 JDBC 连接 Connection。这样就 阅读全文
posted @ 2019-12-10 09:24 ConstXiong 阅读(4422) 评论(0) 推荐(2) 编辑
摘要: execute() 参数 Runnable ;submit() 参数 (Runnable) 或 (Runnable 和 结果 T) 或 (Callable) execute() 没有返回值;而 submit() 有返回值 submit() 的返回值 Future 调用get方法时,可以捕获处理异常 阅读全文
posted @ 2019-12-09 09:36 ConstXiong 阅读(2552) 评论(0) 推荐(0) 编辑
摘要: 先解释两个概念。 等待池:假设一个线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁后,进入到了该对象的等待池,等待池中的线程不会去竞争该对象的锁。 锁池:只有获取了对象的锁,线程才能执行对象的 synchronized 代码,对象的锁每次只有一个线程可以获得,其他线程只能在锁池中等待 阅读全文
posted @ 2019-12-09 09:35 ConstXiong 阅读(3562) 评论(0) 推荐(0) 编辑
摘要: 主要区别 Runnable 接口 run 方法无返回值;Callable 接口 call 方法有返回值,支持泛型 Runnable 接口 run 方法只能抛出运行时异常,且无法捕获处理;Callable 接口 call 方法允许抛出异常,可以获取异常信息 测试代码 打印结果 原文链接 Java 自学 阅读全文
posted @ 2019-12-09 09:33 ConstXiong 阅读(1678) 评论(0) 推荐(0) 编辑
摘要: sleep() 是 Thread 类的静态本地方法;wait() 是Object类的成员本地方法 sleep() 方法可以在任何地方使用;wait() 方法则只能在同步方法或同步代码块中使用,否则抛出异常Exception in thread "Thread-0" java.lang.Illegal 阅读全文
posted @ 2019-12-06 09:34 ConstXiong 阅读(924) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 30 下一页