
java并发编程
文章平均质量分 92
java并发编程
面向c v编程
这个作者很懒,什么都没留下…
展开
-
Java 并发编程(线程,并发概述,Java 内存模型)(1)
线程基本内容程序: 静态代码 安装在硬盘上的进程: 运行中的程序 是操作系统分配内存空间的单位线程: 线程是进程中的一个最小执行单位, 是cpu调度单位 线程依赖于进程创建线程1…线程类 继承 Thread类2.实现 Runnable接口 重写 run( )方法3.创建Thread类的对象,为其分配任务4.实现 Callable接口 重写 call( ) 有返回值 可以抛出异常5.创建Thread类的对象,为其分配任务常用方法run() calll() start(原创 2022-01-18 14:54:17 · 319 阅读 · 0 评论 -
Java 并发编程(线程池)(5)
线程池概述:数据库链接池: 每次与数据链接, 创建连接对象Connection 操作完之后,进行销毁 频繁创建销毁比较耗时.创建一个池子,预先在池子中初始化好一部分连接(Connection )对象, 使用时直接获取即可,用完还回,不需要频繁创建销毁.线程池和数据库连接池的思想是一样的:以前我们需要使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁原创 2022-05-16 15:20:18 · 117 阅读 · 0 评论 -
Java 并发编程(ThreadLocal)(6)
ThreadLocal线程封闭:ThreadLocal 是什么?ThreadLocal 原理分析 :ThreadLocal 内存泄漏问题:线程封闭:在了解 ThreadLocal 之前,我们先了解下什么是线程封闭.对象封闭在一个线程里,即使这个对象不是线程安全的,也不会出现并发安全问题。例如 栈封闭:就是用栈(stack)来保证线程安全.StringBuilder 是线程不安全的,但是它只是个局部变量,局部变量存储在虚拟 机栈,虚拟机栈是线程隔离的,所以不会有线程安全问题.ThreadLoca原创 2022-05-16 16:06:57 · 194 阅读 · 0 评论 -
Java 并发编程(Java中的锁)(4)
Java中的锁Java 中的锁分类:乐观锁/悲观锁:可重入锁:读写锁(ReadWriteLock):分段锁:自旋锁( SpinLock):共享锁/独占锁:AQS(AbstractQueuedSynchronizer):公平锁/非公平锁:偏向锁/轻量级锁/重量级锁:Java 对象头:Synchronized:ReentrantLock:Java 中的锁分类:乐观锁/悲观锁:乐观锁与悲观锁不是指具体的什么类型的锁,而是指看待并发同步的角度.悲观锁认为对于同一个数据的并发操作,一定是会发生修改的,哪怕没有原创 2022-05-09 14:30:39 · 322 阅读 · 0 评论 -
Java 并发编程(并发编程核心问题,volatile 关键字,如何保证原子性,原子类)(2)
并发编程核心问题–可见性,原子性,有序性可见性一个线程对共享变量的修改,另外一个线程能够立刻看到,我们称为可见性。对于如今的多核处理器,每颗 CPU 都有自己的缓存,而缓存仅仅对它所在的处理器可见,CPU 缓存与内存的数据不容易保证一致。为了避免处理器停顿下来等待向内存写入数据而产生的延迟,处理器使用写 缓冲区来临时保存向内存写入的数据。写缓冲区合并对同一内存地址的多次写, 并以批处理的方式刷新,也就是说写缓冲区不会即时将数据刷新到主内存中。缓存不能及时刷新导致了可见性问题。举例:假设线程 1原创 2022-04-13 14:06:37 · 631 阅读 · 0 评论 -
Java 并发编程(CAS,JUC常用类)(3)
CAS.JUC常用类CASJUC 常用类1.ConcurrentHashMap2.CopyOnWriteArrayListCASCAS(Compare-And-Swap) :比较并交换,该算法是硬件对于并发操作的支持.适用于低并发的情况下CAS 是乐观锁的一种实现方式,他采用的是自旋锁的思想,是一种轻量级的锁机制。CAS 包含了三个操作数:①内存值 V ;②预估值 A (比较时,从内存中再次读到的值) ;③更新值 B (更新后的值).当且仅当预期值 A==V,将内存值 V=B,否则什么都不原创 2022-04-23 17:10:40 · 552 阅读 · 0 评论