随笔分类 - juc
摘要:从ThreadLocal的get和set方法入手 public void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) map.set(this,
阅读全文
摘要:synchronized锁升级的过程如下: 无锁状态:在对象头中的Mark Word的分布为,此时并没有线程来获取资源。 偏向锁状态:当线程A抢到了锁,锁偏向位改为1,锁标记为不变,指针指向线程A。线程A再次获取锁时,发现锁状态为偏向锁,并且指针指向自己,就可以继续获取锁。 轻量级锁状态:当线程B来
阅读全文
摘要:进程和线程是操作系统中重要的概念,都是操作系统资源分配的基本单位,但它们有以下区别: 地址空间和资源拥有:同一进程的线程共享本进程的地址空间和资源,而进程之间则是独立的。 通信:同一进程内的线程之间可以直接读写彼此的数据空间,便于高效协作;不同进程间则需要借助中间件(如消息队列)等进行通信,数据可能
阅读全文
摘要:线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。 开发过程中,
阅读全文