摘要: 同步集合 Java中同步集合如下: Vector:基于数组的线程安全集合,扩容默认增加1倍(ArrayList50%) Stack:继承于Vector,基于动态数组实现的一个线程安全的栈 Hashtable:线程安全的k-v结构,k-v均不允许为null Collections.synchroniz 阅读全文
posted @ 2021-03-13 19:27 肆玖爺 阅读(140) 评论(0) 推荐(0)
摘要: CountDownLatch 在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待,基于AbstractQueuedSynchronizer实现,state初始化为count,每countDown一次减1直到等于0,unpark唤醒await线程 重要方法: await():调用此方 阅读全文
posted @ 2021-03-13 19:25 肆玖爺 阅读(90) 评论(0) 推荐(0)
摘要: Deque(双端队列) 子接口BlockingDeque,实现类如下: ArrayDeque:大下可变的数组双端队列,不允许插入null LinkedList:大小可变的链表双端队列,允许插入null ConcurrentLinkedDeque:大小可变且线程安全的链表双端队列,非阻塞,不允许插入n 阅读全文
posted @ 2021-03-13 19:19 肆玖爺 阅读(119) 评论(0) 推荐(0)
摘要: 线程 进程/线程/协程/管程 进程:操作系统会以进程为单位,分配系统资源(CPU时间片、内存等资源),是资源分配的最小单位 进程间通信(IPC): 管道(Pipe) 命名管道(FIFO) 消息队列(Message Queue) 信号量(Semaphore) 共享内存(Shared Memory) 套 阅读全文
posted @ 2021-03-13 19:15 肆玖爺 阅读(157) 评论(0) 推荐(0)
摘要: 锁分类 悲观锁与乐观锁 悲观锁认为对于同一个数据的并发操作,一定是会发生修改的,哪怕没有修改,也会认为修改。因此对于同一个数据的并发操作,悲观锁采取加锁的形式。悲观的认为,不加锁的并发操作一定会出问题 乐观锁则认为对于同一个数据的并发操作,有可能不会发生修改的。在更新数据的时候,会采用尝试更新,不加 阅读全文
posted @ 2021-03-13 18:40 肆玖爺 阅读(259) 评论(0) 推荐(0)
摘要: volatile 保证可见性 一个线程修改volatile变量的值时,该变量的新值会立即刷新到主内存中,这个新值对其他线程来说是立即可见的 一个线程读取volatile变量的值时,该变量在本地内存中缓存无效,需要到主内存中读取 boolean stop = false;// 是否中断线程1标志 // 阅读全文
posted @ 2021-03-13 18:09 肆玖爺 阅读(98) 评论(0) 推荐(0)
摘要: 内存模型 主内存、工作内存与Java堆、栈、方法区并不是同一个层次的内存划分 勉强对应起来 从定义来看,主内存对应Java堆中对象实例数据部分,工作内存对应虚拟机栈中部分区域 从更低层次来说,主内存就是硬件的内存,工作内存对应寄存器和高速缓存 内存交互操作 Java内存模型定义了八种内存交互操作 主 阅读全文
posted @ 2021-03-13 16:56 肆玖爺 阅读(97) 评论(0) 推荐(0)