摘要:
文章汇总 Java集合源码 -- Collection框架概述 Java集合源码 -- Map映射和Set集合 Java集合源码 -- List列表 String和StringBuffer 内部类 jdk动态代理和cglib动态代理 浅拷贝和深拷贝 序列化 原码,反码,补码 按位运算符 阅读全文
摘要:
文章汇总 1.Thread和Runnable 2.synchronized 3.Lock 4.Executor框架 5.信号量和障碍器 6.Exchanger线程间交换数据 7.Java内存操作总结 阅读全文
摘要:
前言 这次用了一个月多点的时间再次温习设计模式,利用下班后的时间回来学习,把学习心得记录下来,加深了对面向对象的理解 之前是看到一个需求搞清楚业务流程之后立刻就去做了,很少从设计层面的角度考虑,现在在开发程序时,开始有了设计的思想,也有了达到可维护,可复用,可扩展目的具体的实现方法 每当看到经过优化 阅读全文
摘要:
在两个线程之间定义同步点,当两个线程都到达同步点时,他们交换数据结构,因此第一个线程的数据结构进入到第二个线程中,第二个线程的数据结构进入到第一个线程中 在生产者-消费者情境模式中它包含了一个数缓冲区,一个或者多个生产者,一个或者多个消费中 下面是生产者和消费者的示例: 控制台输出: 在Exchan 阅读全文
摘要:
主内存和工作内存 工作规则 Java内存模型, 定义变量的访问规则, 即将共享变量存储到内存和取出内存的底层细节 内存间交互操作 上述操作,必须满足以下的规则: happen-before 共享数据的读写操作, 如果不满足happen-bifore条件, 就没有顺序性的保障, 虚拟机可以对他们进行重 阅读全文
摘要:
Semaphore信号量 简介 它本质上是一个共享锁,限制访问公共资源的线程数目,它也被称为计数信号量acquire()许可一个线程, Semaphore – 1; 没有可用的许可时,Semaphore=0 ,线程阻塞release()释放一个线程, Semaphore + 1 示例 控制台输出: 阅读全文
摘要:
简介 Executor框架是启动,管理线程的API, 它的内部实现是线程池机制,它有很多好处,比如使任务提交和任务执行解耦合,防止this逃逸;它的主要API包括: Executor, Executors, ExecutorService , Callable, Future, Completion 阅读全文
摘要:
Lock接口 它提供3个常用的锁 ReentrantLock 实现机制 基于冲突的乐观并发策略: 公平性 公平: 多个线程在等待同一个锁时,必须按照申请锁的时间顺序排队等待非公平: 在锁释放时,任何一个等待锁的线程都有机会获得锁,ReentrantLock构造方法,默然是非公平的 什么时候使用 当你 阅读全文
摘要:
前言 synchronized关键字是互斥锁,也称为内部锁 每个对象都有自己的monitor(锁标记),它是为了分配给线程,最多一个线程可以拥有对象的锁 使用 synchronized修饰成员方法,锁的是当前实例对象 下面是一个例子: 调用: synchronized修饰静态方法,锁的是该类的Cla 阅读全文
摘要:
创建线程 Java有两种方式创建线程, 继承Thread类和实现Runnable接口 继承Thread 步骤: 例如: 实现Runnable 步骤: 例如: Thread和Runnable的区别 买火车票的案例 买5张火车票,我们希望多个线程总共买5张票, 下面是两种实现的代码 继承Thread: 阅读全文