java同步与异步,多线程,锁
java同步与异步,多线程,锁
qifengle1024
这个作者很懒,什么都没留下…
展开
-
线程池作用及创建线程的4种方式
线程池作用: 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源, 还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。 创建线程池的4种方式: Java通过Executors(jdk1.5并发包)提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回转载 2021-04-29 15:30:55 · 208 阅读 · 0 评论 -
进程和线程
进程和线程的区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行. 进程和线程的主要差别在于它们是不同的操作系统资源管理方式。 进程转载 2021-04-27 14:41:56 · 37 阅读 · 0 评论 -
MVCC
Mysql中MVCC的使用及原理详解 英文全称为Multi-Version Concurrency Control,多版本并发控制,是乐观锁的一种实现方式. 基本原理:通过保存数据在某个时间点的快照来实现. 基本特征: 每行数据都存在一个版本,每次数据更新时都更新该版本。 修改时Copy出当前版本随意修改,各个事务之间无干扰。 保存时比较版本号,如果成功(commit),则覆盖原记录;失败则放弃copy(rollback) InnoDB存储引擎MVCC的实现策略 在每一行数据中额外保存两个隐藏的列:当前转载 2021-04-26 16:57:28 · 48 阅读 · 0 评论 -
悲观锁与乐观锁
悲观锁:在修改数据之前先锁定,再修改。当其他线程想要访问数据时,都需要阻塞挂起。 悲观锁的实现: 传统的关系型数据库使用这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 Java 里面的同步 synchronized 关键字的实现 乐观锁假设数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则返回给用户错误的信息,让用户决定如何去做。 乐观锁一般会使用版本号机制或CAS算法实现。 CAS操作的 "ABA"问题:A值可能被改为其转载 2021-04-25 21:07:25 · 39 阅读 · 0 评论 -
java 中创建线程有哪几种方式
java 中创建线程有哪几种方式 一:继承Thread类创建线程类 定义Thread的子类。重写该子类的run()方法。 创建该子类的实例对象,即创建了线程对象。 调用线程对象的start()方法来启动线程。 二、通过Runnable接口创建线程类 定义runnable接口的实现类,并重写该接口的run()方法 创建 Runnable实现类的实例,并依此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。 调用线程对象的start()方法来启动该线程。 三转载 2021-04-25 17:42:33 · 116 阅读 · 0 评论 -
Java线程池七个参数详解
Java线程池七个参数详解转载 2021-04-25 16:15:31 · 39 阅读 · 0 评论 -
synchronized作用域
synchronized关键字在对象实例的作用域,防止多个线程同时访问这个对象的synchronized方法,如果一个对象有多个synchronized方法,只要一个线程访问了其中的某一个synchronized方法,其它线程就不能同时访问这个对象中其他任何一个synchronized方法了。 不同的对象实例的 synchronized方法是不相干扰的。也就是说,其它线程照样可以同时访问相同类的另一个对象实例中的synchronized方法。 synchronized (this),中的this代表着当前对原创 2021-04-22 15:59:35 · 642 阅读 · 0 评论 -
Lock和synchronized
Lock和synchronized的选择 总结来说,Lock和synchronized有以下几点不同: Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现; synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在finally块中释放锁; Lock可以让等待锁的线程响应中断,而synchronized却不原创 2021-04-23 20:58:31 · 71 阅读 · 0 评论