随笔分类 - 多线程
摘要:关于锁不住toString()后的字符串的问题 原因:toString()的源码如下所示,最终都是生成新的字符串,所以当多线程调用的时候,每个线程锁的并不是同一对象。 public static String toString(long i) { int size = stringSize(i);
阅读全文
摘要:Atomic/CountDownLatch/CyclicBarrier/Semaphore/Exchanger/Executors/Future 1. Atomic框架包 Atomic包里放着所以保证线程安全的原子类 大致分为7类 基本数据类型的原子操作类 引用类型的原子操作类 数组类型的原子操作类
阅读全文
摘要:多线程笔记(三) 1. 同步容器与并发容器 同步容器 通过synchronized关键字实现线程安全的容器;或通过Collections这个工具类的synchronizedXXX方法创建的容器,都称为同步容器 例如Vector, Stack, Hashtable Vector是list接口的线程安全
阅读全文
摘要:多线程笔记(二) 1. Synchronized 和 Lock 的区别 synchronized是Java的关键字,是 JVM 层面的内置功能和实现。 Lock是一个接口,是代码层面的实现 synchronized可以隐式的获取,释放锁 lock是显式的获取,释放锁 synchronized在发生异
阅读全文
摘要:多线程笔记(一) 1. sleep()方法和yield()方法 共同点:让当前线程释放cpu资源,让其他线程来运行 不同点:调用sleep()方法后,线程进入到TIMED_WAITING状态,等待超时后进入RUNNABLE状态,开始抢占CPU资源。调用yield()方法后,线程进入RUNNABLE状
阅读全文