1、什么是“线程安全”与“非线程安全”? “非线程安全”会在多个线程对同一对象总的实例变量进行并发访问时发生,产生的后果是“脏读”,也就是取到的数据其实是被更改过的。 “线程安全”是以获得的实例变量的值是经过同步处理的,不会出现脏读的现象。 2、非线程安全例子?怎么解决? 非线程安全 package ...
分类:
编程语言 时间:
2017-07-02 14:20:52
阅读次数:
193
1.read uncommitted 可以看到未提交的数据(脏读),举个例子:别人说的话你都相信了,但是可能他只是说说,并不实际做。 2.read committed 读取提交的数据。但是,可能多次读取的数据结果不一致(不可重复读,幻读)。用读写的观点就是:读取的行数据,可以写。 3.repeata ...
分类:
数据库 时间:
2017-06-27 11:01:29
阅读次数:
190
多线程容易“非线程安全”的情况,是由于用了全局变量,而又没有很好的控制起情况。所以无论做什么程序,谨慎使用全局变量 "非线程安全"其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏”读。 如以下代码就会出现“脏”读的情况: 建立两个线程: 在建立一个测试类: 最后输出:2 ...
分类:
编程语言 时间:
2017-06-21 15:56:38
阅读次数:
424
1.脏读,事物没提交别人就可以读2.重复读,读的时候别人可以更新3. 幻读,读的时候别人可以insert4种隔离级别,read uncommitted ,read committed ,repeatable read,serializable不提交就可以读,提交之后可以读,读的时候不允许更新,串行 ...
分类:
数据库 时间:
2017-06-20 12:21:50
阅读次数:
158
SQL Server 中的 NOLOCK 究竟是什么意思 一般用于此类语句中:select * from t with(NOLOCK) nolock是不加锁查询。能够读取被事务锁定的数据,也称为脏读。 说明: 使当前会话的查询,不受其他会话的事务所堵塞。 可是这样做,就读取了其他事务的“改动后未提交 ...
分类:
数据库 时间:
2017-06-18 10:41:30
阅读次数:
159
锁主要用于多用户环境下保证数据库完整性和一致性。 我们知道,多个用户能够同时操纵同一个数据库中的数据,会发生数据不一致现象。即如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题。这些问题包括:脏读、不可重复读和幻读 脏读就是指当一个事务正在访问数据,并且对数据 ...
分类:
数据库 时间:
2017-06-13 20:43:03
阅读次数:
359
一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏读 A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得 ...
分类:
数据库 时间:
2017-06-12 17:07:16
阅读次数:
168
对于对象的同步、异步的方法,设计程序的时候一定要考虑问题的整体,出现数据不一致就是一个经典的错误。 1.demo 描述:set的方法加了 synchronized 关键字用到了同步,get方法获取没使用到 synchronized 关键字,最后到线程启动,线程一秒后,再次调用get方法,验证是否修可 ...
分类:
编程语言 时间:
2017-06-09 00:47:20
阅读次数:
173
一、事务的基础知识数据库事务:复杂的事务要分步执行,要么整体生效、要么整体失效。必须满足:原子性、一致性、隔离性、持久性。数据并发问题:脏读:A读取了B未提交的更改数据。不可重复读:A两次读,第二次读到了B已经提交的数据。(行级锁)幻读(虚读):A读取B新提交的新..
分类:
编程语言 时间:
2017-06-08 17:54:46
阅读次数:
211
读隔离(New in version 3.2.): readConcern: { level: } readConcern选项可用于以下操作: findcommand aggregatecommand and thedb.collection.aggregate()method distinctco... ...
分类:
数据库 时间:
2017-06-06 01:09:55
阅读次数:
245