摘要:
简介 信号量,有时也被称为信号灯,是多线程模式下使用的一种设施,确保资源正确且合理的使用。 概念 分为两种,单值和多值,前者只能被一个线程获得,后者可以被多个线程获得 比如一个停车场,里面有三个停车位,这时来了五辆车,这时看门人只允许其中的三辆车进入,剩余的等待,在这里,车位属于资源,车辆属于线程, 阅读全文
摘要:
线程的同步 保证多线程安全访问竞争资源的一种手段,避免多个线程同时修改一个资源,导致资源的不正确性。 相关概念 : 什么是竞争资源 什么时候需要同步 要怎样进行同步 1. 将竞争资源标为private 2. 将涉及到静态资源的方法或块用synchrized关键字修饰 同步方法 模拟银行转账功能 vo 阅读全文
摘要:
锁 java5开始,java提供了锁对象,主要是在多线程的情况下对资源的封锁,保证多线程下资源的正确性,主要有三个接口。 1. Condition 将Object监视器方法拆分为截然不同的对象,将这些对象与任意Lock实现组合使用,为每个对象提供多个等待set 2. Lock 实现了比Sychron 阅读全文
摘要:
实现CallAble接口 实例: 阅读全文
摘要:
基本思想(对象池的思想) 内存中开辟一块空间,里面存放众多未死亡的对象,线程的调度由线程池管理,当有线程任务时,从池中取出一个,使用完毕再归还给线程池,这样避免了反复创建线程对象所带来的性能开销,节省了系统资源。 分类 1. cacheTheadPool (可变数量的线程池,缓存线程池) 缓存类型的 阅读全文
摘要:
线程休眠(sleep) 线程调度是java多线程的核心,只有良好的调度,才能充分发挥系统性能,提高程序执行效率。 程序员只能最大程度的影响线程执行的次序(cpu调度线程的可能性),并不能精准控制. 线程休眠是线程让出cpu最简单的做法之一,线程随后进入阻塞状态,直至苏醒,然后进入到可执行状态等待cp 阅读全文
摘要:
``` public class SumTt{ public static void main(String[] args) { SumThread sm = new SumThread(); sm.start(); synchronized (sm) { System.out.println(Sy 阅读全文
摘要:
生命周期 新生 可运行(runable,running) 阻塞 死亡 相关方法 就绪: start() 挂起/唤醒 suspend/resume native wait/notify sleep 终止线程 stop() interrupt() 状态: boolean isAlive() boolea 阅读全文
摘要:
问题引出 为避免多线程对同一个对象进行操作,对数据造成的破坏。 问题解决 确定资源对象为同一个对象 同步和锁定 1. 非静态方法同步 只能同步方法,不能同步属性和类 只有拿到锁的线程才会执行方法,其余线程进入到阻塞状态 只针对同步方法,非同步方法不受锁的约束 如果持锁线程睡眠(sleep),其所持锁 阅读全文
摘要:
消息队列 生产消费 发布订阅 线程 发布订阅模型 实现 public class Box { private int index = 0; private int size = 100; // 阈值 private char[] chars; // 共享区 public Box(int size) 阅读全文