本文共 335 字,大约阅读时间需要 1 分钟。
1.通常使用Synchronized关键字同步代码,可读性好,如果涉及性能问题,可以使用显式的Lock对象
2.免锁容器:通用策略:对容器的修改可以与读取操作同时发生,只要读取者只能看到完成修改的结果即可。修改是在容器数据结构的某个部分的一个单独的副本上执行的,并且这个副本在修改过程中不可视。只有当完成修改时,被修改的结构才会自动的和主数据结构交换,之后读取者就可以看到这个修改了。有ConcurrentHashMap和ConcurrentLinkedQueue
3.乐观加锁
多线程的缺陷:
1.等待共享资源性能降低
2.需要处理线程的额外cpu消耗
3糟糕的程序设计带来不必要的复杂度
4.有可能产生一些病态的行为,如饿死、竞争、死锁
5.不同的平台导致的不一致性
转载地址:http://zmfcb.baihongyu.com/