总结:A,CopyOnWriteArrayList适用于写少读多的并发场景B,ReadWriteLock即为读写锁,他要求写与写之间互斥,读与写之间互斥, 读与读之间可以并发执行。在读多写少的情况下可以提高效率C,ConcurrentHashMap是同步的HashMap,读写都加锁D,volatile只保证多线程操作的可见性,不保证操作的原子性总结:a是类中的成员变量,存放
分类:
其他好文 时间:
2018-01-16 11:12:50
阅读次数:
181
两个线程公用一个Object对象,监控线程先调用Object的wait(),添加线程执行插入,插入之后调用Object的notify() 如此反复 在run方法里加锁synchronizide,同时在锁的内部使用wait方法和notify方法使用就ok了 ...
分类:
编程语言 时间:
2018-01-15 22:34:24
阅读次数:
241
package cn.mutipart.thd; public class Test02 { public static void main(String[] args) { MyPainter p = new MyPainter(); new Thread(){ public void run()... ...
分类:
编程语言 时间:
2018-01-14 19:35:38
阅读次数:
136
锁(lock)的代价 锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。操作系统对多线程的锁进行 ...
分类:
编程语言 时间:
2018-01-14 14:28:10
阅读次数:
279
package cn.mutipart.thd; public class TicketTest { public static void main(String[] args) { String lock = "这是线程锁"; Ticket t1 =new Ticket(lock); new Th... ...
分类:
编程语言 时间:
2018-01-14 12:07:50
阅读次数:
149
单例模式 1.饿汉模式:在类被加载的时候创建实例(线程安全的) 2.懒汉模式:在方法被运行的时候创建实例(线程不安全的) 解决方法:通过双检验 饿汉模式: 懒汉模式: 解决方法1(慢) 解决方法2(慢) 解决方法3(推荐) 原因:如果实例已经存在,就不存在线程安全的问题,可以直接获取实例,减少了加锁 ...
分类:
编程语言 时间:
2018-01-13 14:22:03
阅读次数:
150
我们主要学习数据库的一些基本操作,比如如何在数据库创建用户,授权,删除用户,回收权限,为用户加锁或者解锁等一些常用的操作。 首先,我们要知道数据库中创建用户的语句怎么写,看下面: 1.创建用户 create user laowang identified by laowang; 创建用户名为laow ...
分类:
数据库 时间:
2018-01-11 17:40:32
阅读次数:
233
MySQL 表锁和行锁机制 行锁变表锁,是福还是坑?如果你不清楚MySQL加锁的原理,你会被它整的很惨!不知坑在何方?没事,我来给你们标记几个坑。遇到了可别乱踩。通过本章内容,带你学习MySQL的行锁,表锁,两种锁的优缺点,行锁变表锁的原因,以及开发中需要注意的事项。还在等啥?经验等你来拿! MyS ...
分类:
数据库 时间:
2018-01-11 15:56:57
阅读次数:
209
Locking Reads 在同一个事务中,如果你先查询数据,随后对相关数据进行插入或修改,那么在标准的SLELECT中不会给出足够的保护。在你查询期间另一个事务可以更新或者删除相同的行。InnoDB提供两种类型的加锁读: SELECT ... LOCK IN SHARE MODE 给读到的每一行都 ...
分类:
数据库 时间:
2018-01-10 20:27:02
阅读次数:
192
MySQL 表锁和行锁机制 行锁变表锁,是福还是坑?如果你不清楚MySQL加锁的原理,你会被它整的很惨!不知坑在何方?没事,我来给你们标记几个坑。遇到了可别乱踩。通过本章内容,带你学习MySQL的行锁,表锁,两种锁的优缺点,行锁变表锁的原因,以及开发中需要注意的事项。还在等啥?经验等你来拿! MyS ...
分类:
数据库 时间:
2018-01-09 23:17:17
阅读次数:
295