Knight Dawn


  • 首页

  • 归档

Serializable序列化

发表于 2019-03-10
serialVersionUID运行时判断类的serialVersionUID来验证版本的一致性; serialVersionUID不一致,会报invalidClassException; serialVersionUID一致,缺少字段不处理,多余字段会赋默认值; 如果不显式的设置serialVe ...
阅读全文 »

类加载机制

发表于 2019-03-06
版本:java8 类加载过程是怎样的?运行时,虚拟机把描述类的数据从Class文件加载到内存中,并对数据进行验证,准备,解析,初始化的一个过程,最终是可以被虚拟机直接使用的java类型加载 -> 连接(验证、准备、解析) -> 初始化 -> 使用 -> 卸载如果输入数据不是 ...
阅读全文 »

spark_rdd_算子

发表于 2018-07-05
rdd creattiontranformationreduceByKey1234567891011121314// val rdd = sc.parallelize(Seq( ("123", State("123", Set("1", "2", "3"))), ("123", State("1 ...
阅读全文 »

Scala学习总结_集合操作篇

发表于 2018-07-03
scala version 2.11 java 集合和scala集合互转 java List && scala List 123456789101112// java list to scala listval list: java.util.List[String] = Arr ...
阅读全文 »

ARTS-01

发表于 2018-06-20
一周一个ARTS计划 Algorithm: 一个leetcode算法题 Review: 点评(或翻译学习)一篇英文技术文章 Tip: 学习一个技术技巧 Share: 分享一个技术观点和思考 A无重复字符的最长子串1234567891011121314151617181920212223242526 ...
阅读全文 »

Scala学习总结

发表于 2018-06-20
class & object su: class 跟伴生对象能访问彼此的私有成员 A class and its companion object can access each other’s private members su: 单例对象可以继承一个超类同时混合traits的特性 ...
阅读全文 »

CompareAndSet

发表于 2018-06-20
linkQ: AtomicInteger底层原理?什么是CAS, 怎么使用CAS? Atomic* AtomicInteger对int类型的封装,提供原子性的读取和更新操作 1234567891011121314151617181920212223242526// 不能保证原子性public ...
阅读全文 »

死锁分析

发表于 2018-06-20
极客时间链接Q: 什么情况下 Java 程序会产生死锁?如何定位、修复? 死锁 多线程环境下,多个线程之间,相互持有对方所需的锁,永久处于等待中 写一个死锁例子1234567891011121314151617181920212223242526272829303132public class ...
阅读全文 »

同步机制

发表于 2018-06-13

概念

  • 线程安全

    一个类在多线程环境下始终表现出正确的行为

  • 无状态对象、不可变对象

    对象内无任何域,无其他对象的引用,无状态对象是线程安全的

  • 竞态条件

    由于不恰当的执行时序导致不正确的结果

  • 可见性

    一个线程修改了对象状态,其他线程能够看到这个变化

  • 重排序

    没有同步的情况下,底层会对执行顺序进行调整

  • 线程状态

    New(创建线程未start)、Runnable(start但未分配CPU)、Running、Blocked(阻塞让出CPU时间)、waiting(等待)

  • 线程封闭

    避免使用同步,仅在单线程内访问数据的方式: 局部变量和ThreadLocal

  • 重入

    某个线程试图获取自己持有的锁,请求可以成功

  • 如何实现线程安全

    线程安全实现围绕三个特性进行解决,原子性、可见性、有序性
    1、线程安全类
    2、无状态对象、线程封闭 (不共享资源)
    3、原子类 atomic包 (原子性)
    4、volatile (可见性,volatile变量修改后会刷新到主存中,有序性,volatile会通知低层禁止重排序)
    5、使用并发集合ConcurrentHashMap
    6、同步机制(原子性)

阅读全文 »

ThreadPoolExecutor

发表于 2018-06-12
ThreadPoolExecutor 处理流程画了一个大概的处理流程 Executors 通用的线程池创建方法newFixedThreadPool12345678910111213// LinkedBlockingQueue 这里的大小默认是Integer.MAX_VALUE,相当于无界,nThre ...
阅读全文 »
12

sugengbin

19 日志
26 标签
© 2019 sugengbin
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4