1、synchronized作用于静态方法和非静态方法的区别 非静态方法:给对象加锁(可以理解为给这个对象的内存上锁,注意 只是这块内存,其他同类对象都会有各自的内存锁),这时候在其他一个以上线程中执行该对象的这个同步方法(注意:是该对象)就会产生互斥静态方法: 相当于在类上加锁(*.class位于 ...
分类:
编程语言 时间:
2021-03-18 14:34:08
阅读次数:
0
1.ReentrantLock 给类文件加锁,实现类似synchronized(class)的功能 核心是类文件中,使用static修饰的reentrantLock对象 public class SourceCache { public static final Lock reentrantLock ...
分类:
其他好文 时间:
2021-03-10 13:38:38
阅读次数:
0
背景介绍: 在多线程的环境里,如果共享资源没有上锁,将会出现共享数据混乱的情况。 在单核CPU系统里,系统以时间片调度的方式让多个程序轮流使用处理器,造成了【并发】的假象。 在进程/线程并发执行的过程中,进程/线程之间存在协作的关系,比如互斥、同步。 什么叫进程互斥? 两个或两个以上的进程,不能同时 ...
分类:
编程语言 时间:
2021-03-03 12:23:58
阅读次数:
0
线程通信 等待: public final void wait(); public final void wait(long timeout); //必须在对obj加锁的同步代码块中,在一个线程中,调用obj.wait()时,此线程会释放其拥有的所有锁标记,同时此线程在无限期等待的状态中,释放锁,进 ...
分类:
编程语言 时间:
2021-03-03 12:10:36
阅读次数:
0
CopyOnWriteList简介 ArrayList是线程不安全的,于是JDK新增加了一个线程并发安全的List——CopyOnWriteList,中心思想就是copy-on-write,简单来说是读写分离:读时共享、写时复制(原本的array)更新(且为独占式的加锁),而我们下面分析的源码具体实 ...
分类:
其他好文 时间:
2021-02-20 11:47:34
阅读次数:
0
queue模块实现了多生产者,多消费者队列 queue模块的常用类和异常 queue.Queue(maxsize=0) 先进先出(FIFO)的队列, maxsize: 队列的大小(即队列的元素个数),默认0,队列大小无限;如果超过maxsize,队列会加锁,添加新元素是被堵塞,直到队列中的元素小于m ...
分类:
编程语言 时间:
2021-02-19 13:10:44
阅读次数:
0
1.悲观锁 很悲观,什么时候都会出问题,无论做什么都加锁,影响效率。 2.乐观锁 很乐观,任务什么时候都不会出问题,所以不会上锁,跟新数据的时候去判断一些,在此期间是否有人修改过这个数据,在Mysql中是利用Version字段实现!在Redis中利用watch命令。 获取version 更新的时候比 ...
分类:
其他好文 时间:
2021-02-16 12:29:04
阅读次数:
0
for update 和 for update nowait的相同点 对操作的数据行进行加锁,在事务提交前防止其他操作对数据的修改 使用for update 测试工具 pgadmin,打开SQL窗口,关闭事务的自动提交,改成手动提交事务 select * from table1 where id = ...
分类:
其他好文 时间:
2021-02-02 10:48:35
阅读次数:
0
一、宏观上: 1、Oracle是大型的数据库而Mysql是中小型数据库;Mysql是开源的,Oracle是收费的,且价格昂贵。 2、Oracle支持大并发,大访问量,是OLTP的最好的工具。 3、安装占用的内存也是有差别,Mysql安装完成之后占用的内存远远小于Oracle所占用的内存,并且Orac ...
分类:
数据库 时间:
2021-01-29 11:44:59
阅读次数:
0
Java 并发 Java 并发 一、使用线程 实现 Runnable 接口 实现 Callable 接口 继承 Thread 类 实现接口 VS 继承 Thread 二、基础线程机制 Executor Daemon sleep() yield() 三、中断 InterruptedException ...
分类:
编程语言 时间:
2021-01-16 11:56:57
阅读次数:
0