文档章节

并发编程的技巧和策略

秋风醉了
 秋风醉了
发布于 2014/11/17 17:21
字数 288
阅读 225
收藏 19

并发编程的技巧和策略

  • 可变状态是至关重要的。

    所有的并发问题都可以归结为如何协调对并发状态的访问。可变状态越少,就越容易确保线程安全性。

  • 尽量将域声明为final 类型,除非需要他们是可变的

  • 不可变对象一定是线程安全的

  • 不可变对象能极大地降低并发编程的复杂性。他们更为简单而且安全,可以任意共享而无需使用加锁或保护性复制等机制。

  • 用锁来保护每个可变变量

  • 当保护同一个不变性条件中的所有变量时,要使用同一个锁

  • 在执行复合操作期间,要持有锁

  • 如果从多个线程中访问同一个可变变量没有同步机制,那么程序就会出现问题

  • 在设计过程中考虑线程安全,或者在文档中明确地指出他不是线程安全的。

  • 将同步策略文档化

==============END==============

© 著作权归作者所有

共有 人打赏支持
秋风醉了
粉丝 239
博文 572
码字总数 416654
作品 0
朝阳
程序员
私信 提问
Java多线程开发技巧

很多开发者谈到Java多线程开发,仅仅停留在new Thread(...).start()或直接使用Executor框架这个层面,对于线程的管理和控制却不够深入,通过读《Java并发编程实践》了解到了很多不为我知但又...

凯文加内特
2015/10/19
259
0
2014年首月的新书推荐!

大家好,这篇贴子是人民邮电出版社信息技术分社的第一期书讯,以后每个月的1号,我们都会从“人邮IT书坊”微信账号给大家推荐最新、最优秀、最热门的技术图书,希望大家多多关注信息技术分社...

生气的散人
2014/01/06
2.4K
3
福利丨用这两本好书,承包你的整个元旦小长假!

俗话说得好,圣诞都过了,元旦还会远吗? 在这小长假来临之际,小编为大家带来新一期@图灵教育 出版的好书推荐:《Docker:容器与容器云(第2版)》与《Go并发编程实战》。 当然,按照往期惯...

DBAplus社群
2016/12/30
0
0
java并发编程(四): 基础构建模块

基础构建模块: 委托是创建线程安全类的一个最有效的策略:只需让现有的线程安全类管理所有的状态即可。 同步容器类: 同步容器类包括:Vector, Hashtable及Collections.synchronizedXxx()方...

ihaolin
2014/03/26
0
2
《Istio官方文档》设计理念

《Istio官方文档》设计理念 并发编程网 – ifeve.com2018-01-071 阅读 service 原文链接 译者:carvendy 设计理念 这页概述了Istio的核心设计理念。 Istio的架构里有一些关键的设计理念,是在...

并发编程网 – ifeve.com
01/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 使用 pinyin4j 生成汉字拼音

添加 pinyin4j jar包 <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.0</version> ......

yh32
9分钟前
0
0
Deepin 安装wireshark抓包工具

一、关于deepin和wireshark deepin目前已经发展到15.8了,开发Android毫无压力,在四个月的使用时间里,已经非常习惯了。目前想处理一些网络问题,因此尝试在deepin上安装一个抓包工具。dee...

IamOkay
50分钟前
6
0
Docker镜像仓库服务-Nexus

建立云原生集群系统,建立自己的私有Docker镜像仓库必不可少。一方面可以加快多节点部署容器镜像的下载速度,另一方面是为了安全(容器里存储有系统所有的信息、包括密码、数据库等等,切记不...

openthings
今天
3
0
127.0.0.1 和 0.0.0.0 地址的区别

1. IP地址分类 1.1 IP地址表示 IP地址由两个部分组成,net-id和host-id,即网络号和主机号。 net-id:表示ip地址所在的网络号。 host-id:表示ip地址所在网络中的某个主机号码。 即: IP-a...

华山猛男
今天
24
0
解决Unknown host 'd29vzk4ow07wi7.cloudfront.net'. You may need to adjust the proxy settings in Gradle.

把 总项目 下的 build.gradle 中的 两个 jcenter() 用 maven{ url ‘http://maven.aliyun.com/nexus/content/groups/public/’} 代替。...

lanyu96
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部