随笔分类 - 线程
摘要:JMM JMM规定: 按顺序执行read--load,且不可单独出现。按顺序执行store-- write,且不可单独出现。有assign操作后,变量改变后,需要同步到主内存中。新变量必须诞生在主内存中,不可使用未load过的变量。一个变量同一时刻只允许一个线程lock它。且一个lock就要一个un
阅读全文
摘要:公平锁/非公平锁 可重入锁 指的是以线程为单位,当一个线程获取对象锁之后,这个线程可以再次获取本对象上的锁,而其他的线程是不可以的。 public class ReenterLockTest { public static void main(String[] args) { new Thread(
阅读全文
摘要:底层实现 public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new
阅读全文
摘要:JUC集合 List CopyOnWriteArrayList CopyOnWriteArrayList 写入时复制。cow,是计算机程序设计领域的一种优化策略。 多个线程并发调用list时,为解决写入的时候避免覆盖造成数据的问题, 写入的时候复制一个数据出来,写入后再插入进去 性能 vector(
阅读全文
摘要:线程池概述 经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对线程影响很大。 使用线程池的好处 提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。 高响应速度(减少了创建新线程的时间) 降低资源消耗(重复利用线程中的线程,不需要每次都创建) 便于线程管理:corePoolS
阅读全文
摘要:生产者消费者模式的两种实现方式 只有一个生产者和线程一个消费者线程的情况,这个时候使用if;多个生产者和消费者线程的时候一定要使用while。 管程法 测试1-synchronized 多生产者多消费者模式下,假设有两个生产者,第一个生产者获取数据的时候,发现 if(num!=0),便进入等待状态;
阅读全文
摘要:ReentrantLock vs synchronized synchronized内置java关键字。Lock是一个java类 synchronized无法判断获取锁的状态,Lock可以判断是否获得到了锁 synchronized会自动释放锁,lock锁必须要手动释放,如果不释放会死锁。 sync
阅读全文
摘要:同步:队列+锁 性能问题 每个线程都有自己的工作内存 测试1、买票 public class TicketTest { public static void main(String[] args) { Ticket ticket = new Ticket(); new Thread(ticket,"
阅读全文
摘要:一个进程可以有多个线程。 进程是资源分配的单位。 测试 测试0-callable的使用 public class T { public static void main(String[] args) throws Exception { /*//连接池调用Callable ExecutorServi
阅读全文

浙公网安备 33010602011771号