随笔分类 - java多线程
摘要:[toc] 1 准备知识 介绍线程池之前先简要了解一下Executor,ExecutorService,Future,Callable,Executors是什么,和线程池又有什么关系 1.1 Executor 它是线程池顶级接口。它定义了一个方法 void execute(Runnable) 。 这
阅读全文
摘要:[toc] 1 容器集简单介绍 java.util包下面的容器集主要有两种,一种是Collection接口下面的List和Set,一种是Map, 大致结构如下: + Collection + List + LinkedList + ArrayList + Vector + Stack + Set +
阅读全文
摘要:[toc] 1 ReentrantLock与synchronized对比 ReentrantLock与synchronized都是为了同步加锁,但ReentrantLock相对效率比synchronized高,量级较轻。 synchronized在JDK1.5版本开始,尝试优化。到JDK1.7版本后
阅读全文
摘要:[toc] 1 案例之变量内存可见性 代码解析:新起一个子线程执行m()方法,1秒后主线程将b置为false,子线程是否会停止执行死循环while(b){},打印“end” 结果:1秒钟过后并不会停止执行死循环while(b){},打印“end” 这时候,如果将boolean b = true;这段
阅读全文
摘要:[toc] 1.为什么要使用synchronized? 在并发编程中存在线程安全问题,主要原因有: 1.存在共享数据 2.多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的变化可见(可见性
阅读全文