1.事务 丢失更新问题(数据写问题)
悲观锁 不怎么用 数据库锁的机制,在sql语句后 for update
乐观锁 javaBean对象加新的属性 version(相当于加版本号,事务提交时比较版本号,版本号不相等,侧不提交事务,抛出异常)
2.数据库 读问题 脏读 不可重复读等
设置数据库隔离级别来解决上述问题
共享锁 又叫读锁,其他事务可以继续加共享锁,但是不能加排它锁
排它锁 又叫写锁,一旦加了写锁,其他事务便不能再加锁
意向锁 一个表中某几行的锁
记录锁 锁的是索引记录
间隙锁(gap锁)
自增长锁 sql执行完即释放,并不是事务执行完
3. Lock Condition对象
锁用来保护临界区代码,条件对象用来管理已经进入被保护代码段但还不能执行的线程
可以使用Synchronized wait() notifyAll() 来代替上面的锁和条件写法,因为每个对象都有一个内部锁,并且每个锁有一个内部条件。
如果涉及读写分类的话,可以利用效率更好的读写锁 ReentrantReadWriteLock()
自己编写,可以使用堵塞队列来管理线程 例如:ArrayBlockingQueue LinkedBlockQueue
4.对于可能报错的代码,要用try catch 包装起来,用日志 或者 抛出异常的方式处理
5.测试代码是否可以正确运行时,可以编写测试类;也可以直接在类中写main方法,直接测试。