随笔分类 - Java Concurrency
摘要:■ 线程池的创建 在Java中,您可以通过调整-Xss参数来调节每个线程栈的大小(64bit系统默认1024KB),当减小该值时意味着可以创建更多的线程数,但问题是JVM资源是有限的,线程不能无限创建! 从笔者开发经验来看,线程池应该是并发包中使用频率和运用场景最多的并发框架,几乎所有并发/异步执行
阅读全文
摘要:■ 并发原理 单核系统:线程交替执行,由于交替又快又多,给人一种同时执行的感觉多核系统:不仅可以交替执行线程,而且可以重叠执行线程补充: 本章指的并发主要指的是线程间的并发 ■ 常见的并发机制 ■ 不同系统的并发机制 UNIX:管道、消息、共享内存、信号量、信号 Linux内核:原子操作、自旋锁、信
阅读全文
摘要:■ 前言 - 内存锁的不足 不可中断:使用内部锁(指的是 synchronized) 时,不能中断正在等待获取锁的线程 不可超时:使用内部锁时,在请求锁失败情况下,必须无限等待,没有超时效果 自动释放:使用内部锁时,内部锁必须在获取它们的代码块中被自动释放(虽然对代码来说是种简化且对异常友好) 不可
阅读全文
摘要:■ 前言 并发包一直是 JDK 里面比较难理解的,同时也是很精美的语言,膜拜下 Doug Li 大神。作者不敢长篇大论,只求循序渐进地把并发包通过理论和实战 (代码) 的方式介绍给大家。 其实做每一件事都是挺难的,不过只要下笔就不会瞻前顾后。谢谢大家的鼓励帮助,感谢我的好基友KIRA~ 好的,热身先
阅读全文
摘要:■ Java 锁 1. 锁的内存语义 锁可以让临界区互斥执行,还可以让释放锁的线程向同一个锁的线程发送消息 锁的释放要遵循 Happens-before 原则(锁规则:解锁必然发生在随后的加锁之前) 锁在Java中的具体表现是 Synchronized 和 Lock 2. 锁的释放与获取 线程A 释
阅读全文
摘要:■ ThreadLocal 定义 ThreadLocal通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本
阅读全文
摘要:笔者的 “多线程- 让程序更高效的运行” 关联文 感谢帮助过我的好基友们,一如既往地发布好文,让技术舞动起来 ■ Java 内存模型 1.1 Java 内存模型 Java线程间的通信由Java内存模型(JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见 JMM是一个抽象的概念,并非
阅读全文
摘要:Java Thread 的一些认识: Java是抢占式线程,一个线程就是进程中单一的顺序控制流,单个进程可以拥有多个并发任务,其底层是切分CPU时间,多线程和多任务往往是使用多处理器系统的最合理方式 进程可以看作一个程序或者一个应用;线程是进程中执行的一个任务,多个线程可以共享资源 一个Java 应
阅读全文

浙公网安备 33010602011771号