多线程
文章平均质量分 90
囚蕤
这个作者很懒,什么都没留下…
展开
-
Java多线程——synchronized,volatile,CAS,ReentrantLock
当没有线程占用锁对象时处于无锁,当有一个线程占用该锁时变成偏向锁,偏向搜不是真的加锁,而是添加一种锁标记,如果之后没有发生锁竞争就无须开销锁资源,如果有锁竞争就添加自旋锁,自旋锁是一种轻量级锁,在锁冲突不激烈的情况下,在抢占不到锁时不会处于阻塞状态而会一致尝试抢占锁,当锁竞争激烈时,自旋锁不能马上获取到锁,就会膨胀为重量级锁,调用OS的mutex将没有抢占到锁的线程加入到阻塞队列中,重量级锁的具体执行过程如上述介绍。.lock前缀指令在多核处理器中会做2件事情:将当前工作内存中的变量的值写回到主内存中;原创 2022-09-09 14:31:09 · 365 阅读 · 0 评论 -
进程和线程的区别和联系
目录线程概念存在意义进程和线程的区别和联系线程概念进程就是一个"执行流",按照某种顺序执行自己的代码。存在意义如今各种操作系统均能实现多进程同时执行,也就是支持并发编程。一个进程的创建需要消耗计算机资源,销毁意味着要释放资源。当很多个进程同时执行时,计算机资源的消耗太大,执行效率较低。如何才能提高并发编程的效率?有两种方式:进程池:像String常量池、数据库中的连接池,使用进程池来存储多个进程,当进程销毁时并不真的释放这个进程而是将进程存储到进程池中,这样再次使用该进程时直接从进程池中取就原创 2022-04-03 17:59:39 · 2418 阅读 · 0 评论 -
多线程(JUC(Callable接口,ReentrantLock类,原子类,线程池,Semaphore,CountDownLatch),线程安全集合类)
目录Callable接口JUCReentrantLock原子类线程池信号量SemaphoreCountDownLatch线程安全集合类死锁总结Callable接口JUCReentrantLock原子类线程池信号量SemaphoreCountDownLatch线程安全集合类死锁总结原创 2022-04-29 13:32:18 · 201 阅读 · 0 评论 -
多线程(锁策略,CAS,synchronized锁原理和锁优化)
目录锁策略CASsynchronized原理及优化锁策略乐观锁 VS 悲观锁乐观锁:假设数据发生并发冲突的概率低,所以只在数据修改完之后进行提交更新时才对数据进行并发冲突检测,如果发现并发冲突,则返回给用户错误的信息.悲观锁:假设数据发生并发冲突的概率高,所以每次对数据进行修改时都会加上,当别人想拿这个数据时会产生阻塞等待.乐观锁相较于悲观锁而言,所做的工作更少,但就效率而言,两者的效率取决于应用的场景.当场景中数据发生冲突的可能性比较低时,乐观锁的效率比较高,因为悲观锁会在每次对数据进行修改原创 2022-04-13 11:48:22 · 228 阅读 · 0 评论 -
多线程案例(单例模式(饿汉-懒汉),阻塞队列,定时器,线程池)
目录单例模式饿汉模式懒汉模式阻塞队列定时器线程池总结单例模式饿汉模式饿汉模式:在类加载的时候就创建实例.class SingleTon{ //在类加载的时候就创建了单一实例 private static SingleTon instance = new SingleTon(); //构造器设置成私有防止用户创建别的实例 private SingleTon(){ } //设置成static方便调用该实例 public static SingleTon原创 2022-04-25 15:13:01 · 510 阅读 · 1 评论 -
多线程——初阶
目录线程的创建Thread类的常用方法线程的状态线程安全synchronized的特性volatile的特性wait 和 notify线程的创建在Java中提供了一个线程类Thread,我们利用Thread类来创建线程。下面我们来介绍线程的几种不同的创建形式。继承Thread类public class Demo { public static void main(String[] args) { Thread a1 = new MyThreadByThread();原创 2022-04-06 14:46:01 · 469 阅读 · 12 评论