JAVA线程
行一米
积跬步行一米,知行合一。
展开
-
多线程间一致可见性volatile变量
/** * volatile关键字具备线程间可见性 * jdk1.5之后,线程执行之前,会拷贝一份主线程之中的变量副本,用于本线程 * */public class SonThread extends Thread{ //多个线程中isRunning保持一致可见性 private volatile boolean isRunning = true; private转载 2017-01-08 22:33:07 · 531 阅读 · 2 评论 -
多线程:保持原子性的变量AtomicInteger(效率高于synchronized)
import java.util.concurrent.atomic.AtomicInteger;/** * volatile不具备synchronized关键字的原子性(同步) * AtomicInteger具备原子性(同步) */public class VolatileNoAtomic extends Thread{ //private static volatile int转载 2017-01-08 22:37:15 · 1684 阅读 · 0 评论 -
JAVA线程锁:多线程通信
synchronized重入锁(读<=写)//基本用法public class UseReentrantLock { private Lock lock = new ReentrantLock(); public void method(){ try { lock.lock(); System.out.println(转载 2017-01-13 19:43:26 · 314 阅读 · 0 评论 -
多线程高并发单例模式
内部类实例化static inner class/** * 静态内部类做单例 * */public class Singletion { private static class InnerSingletion { private static Singletion single = new Singletion(); } public static Si原创 2017-01-10 17:27:29 · 556 阅读 · 0 评论 -
高并发同步类容器
老的同步类容器比如Vector、HashTable、TreeMap (支持排序),原理是在所有公共方法上加synchronized关键字(高并发不用)。再并发修改(迭代过程中并发修改了内容)的情况下要加锁保护操作,否则会报ConcurrentModificationException。JAVA 1.5同步类容器CopyOnWriteArrayList代替Vector,Concurr原创 2017-01-11 19:38:40 · 349 阅读 · 0 评论 -
高并发:队列Queue
查看Queue接口和类树状结构(F4显示) 高并发队列ConcurrentLinkedQueue无锁,基于链接节点的无界限线程安全队列(不懂),先进先出,元素不能为null; 无界 1.添加 add() / offer()阻塞队列BlockingQueue1.取头元素:poll() 取且删除,peek()取而不删带优先级的PriorityBlockingQueue元素必须实现Comparable转载 2017-01-11 20:34:53 · 2311 阅读 · 0 评论 -
多线程设计模式
Future(类似AJAX请求,异步获取数据)Created with Raphaël 2.1.0客户端Future客户端FutureFutureData包装类FutureData包装类RealData类RealData类1.call2.return3.other call4.other call return5.获取真实数据操作//调用类public class Main { publi转载 2017-01-11 22:20:26 · 365 阅读 · 0 评论 -
JAVA 线程池:超时等待线程调用
方法/** * Created by hurf on 2016/8/24. * 多线程帮助类 */public class ThreadsUtil { public static ExecutorService executor = Executors.newFixedThreadPool(12);//几个内核就初始化几个 /** * 统一超时调用入口原创 2016-11-16 19:32:01 · 1460 阅读 · 0 评论 -
JAVA 线程等待
CyclicBarrier只要有一个线程没完成,所有线程等待CountDownLatch监听线程操作(比如初始化),等待操作完成之后,通知其他线程Created with Raphaël 2.1.0主线程主线程CountDownLatch对象CountDownLatch对象子线程子线程子线程子线程主线程主线程1.创建CountDownLatch(1)对象,计数为12.创建一个子线程,长时间原创 2017-01-12 21:46:14 · 537 阅读 · 0 评论