
并发编程
文章平均质量分 92
线程、锁等.....
keep.ac
天将降大任于斯人也...
展开
-
Synchronized锁、锁的四种状态、锁的升级(偏向锁,轻量级锁,重量级锁)
Synchronized【对象锁】采用互斤的方式让同一时刻至多只有一个线程能持有【对象锁】,其它线程再想获取这个【对象锁】时就会阻塞住。synchronized方法和synchronized块。原创 2024-11-06 13:44:09 · 1924 阅读 · 0 评论 -
JMM内存模型(面试回答)
JMM内存模型,JMM三大特性(面试回答)JMM就是Java内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问有一定的差异,所以会造成相同的代码运行在不同的系统上会出现各种问题。所以Java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的并发效果。原子性:可见性:一个线程对共享变量的修改,能够被其他线程看到。通过volatile关键字、锁(如synchronized)来实现可见性。有序性:程序的原创 2024-11-05 22:54:33 · 552 阅读 · 0 评论 -
线程池的创建方式、执行流程、拒绝策略
线程池中的线程执行完毕后,并不会立即被销毁,而是会被线程池回收并重新放入线程池中,等待下一次的任务分配。假设有三个线程在执行任务,线程1、线程2、线程3,此时线程1的任务执行完毕,又提交了一个任务4,任务4是使用线程1执行,还是会创建一个新的线程4执行呢?(临时线程的创建条件是:核心线程都被占用,任务队列也满,此时又有新的任务提交则会创建临时线程执行任务)临时线程的创建条件是:核心线程都被占用,任务队列也满,此时又有新的任务提交则会创建临时线程执行任务。线程池中的线程分为两种类型:核心线程和非核心线程。原创 2024-11-04 17:20:41 · 789 阅读 · 0 评论 -
线程状态的转换,sleep()、yield()和wait()方法的区别,join()方法的作用,打断线程的3种方式、volatile关键字
使当前线程进入休眠状态(TIMED_WAITING状态),wait()的调用必须先获取wait()对象的锁,而sleep则无此限制,方法执行后会释放对象锁,允许其它线程获得该对象锁(我放弃cpu,但你们还可以用)进入 wait 状态的线程能够被 notify 和 notifyAll 线程唤醒,而 sleep 状态的线程不能被 notify 方法唤醒;sleep()不获取sleep()对象的锁也可以使用,sleep()如果并不会释放对象锁线程状态的转换,sleep()、yield()和wait()方法的区别,原创 2024-11-04 17:07:28 · 759 阅读 · 0 评论 -
多线程批量插入数据的测试与性能分析,总体性能提升89.2%
测试的主要目标是评估不同条件下数据插入操作的性能,包括单条插入、批量插入,以及多线程+批量插入的效果。通过这些测试,了解在大数据量场景下,如何优化插入操作以提高性能。批量插入显著优于单条插入。批量插入的性能与批次大小有关,选择合适的批次大小可以优化性能。多线程结合批量插入是进一步提升插入性能的有效手段,在大数据量插入场景下尤为明显。最慢的方式是使用单条插入方式插入 100w 条数据,需要大约 250.18 秒。最快的方式是10 个线程,每次传输1k 条数据时,插入 100w 条数据,为27 秒。原创 2024-08-22 11:48:41 · 1068 阅读 · 0 评论 -
多线程最全笔记
匿名内部类写法看到这里,请你说出三种线程的创建方式和不同点(各自的特点)?3.常用APILock锁是JDK5版本专门提供的一种锁对象,通过这个锁对象的方法来达到加锁,和释放锁的目的,使用起来更加灵活。1.首先在成员变量位子,需要创建一个Lock接口的实现类对象(这个对象就是锁对象)2.在需要上锁的地方加入下面的代码lk.lock();// 加锁//...中间是被锁住的代码...// 解锁。原创 2024-08-24 01:49:05 · 1111 阅读 · 0 评论