文档章节

身为JAVA工作者必须了解的实战知识(一)

 叶荷
发布于 2017/08/27 19:46
字数 1221
阅读 4
收藏 0

一、什么是线程安全性

编写线程安全的代码

核心在于要对状态访问操作进行管理。

共享,可变的状态的访问 - 前者表示多个线程访问, 后者声明周期内发生改变.

线程安全性

核心概念是正确性。某个类的行为与其规范完全一致。

多个线程同时操作共享的变量,造成线程安全性问题。

* 编写线程安全性代码的三种方法:

不在线程之间共享该状态变量

将状态变量修改为不可变的变量

在访问状态变量时使用同步

Java同步机制工具:

synchronized

volatile类型变量

显示锁(Explicit Lock )

原子变量

二、1 原子性

原子性

不可再分的操作。

例如:读,原子操作,写原子操作.

改变变量的值,非原子操作,因为涉及读,改,写

线程安全需要考虑的因素:

对象状态 - 什么叫有状态和无状态?无状态对象肯定是线性安全的?

复合操作 - 操作有多个步骤完成的操作 (例如, 先检测后执行, 变量的操作都分类三步 : 读取  - 修改  - 写入. )

竞态条件

先检测后执行

延迟初始化竞态条件(单例, 调用方法时才返回对象)

** 待添加实例解释原子性

二、2 线程安全解决办法

2.3  加锁机制

遇到问题 - 可以保证每个变量都是线程安全的,但是如果一个方法中同时有多个变量,必须保证变量同步更新才算线程安全。

多个变量时需要加同一个锁,保证多个变量同时更新。

2.4 用锁来保护状态

通常认为只有写入的时候才需要锁,但如果读取的时候值值不能确保是否有其他现在正在修改或者以修改,同样会遇到问题。

2.5 *** 活跃性与性能

活跃性问题?

例如: 线程A等待线程B释放其持有的资源

性能问题?

例如: 线程切换过于频繁,CPU在线程调度上花费资源过多

*** 新的文章中总结锁相关知识与问题

思考

可能出现线程安全的地方?

变量相关

方法操作变量

情况:

多个线程访问一个变量

多个线程访问多个变量

多个线程访问多个方法,同时操作一个变量

多个线程访问多个方法,同时操作多个变量

以上就是我推荐给Java开发者们的一面试经典知识。但是这些知识里面并没有太多Java全栈、Java晋阶、JAVA架构之类的题,不是我不推荐,而是希望大家更多的从基本功做起,打好基础,太多复杂的内容一会儿也说不明白。

好了同学们,我能介绍的也都全部介绍完给你们了,如果下获得更多JAVA教学资源,可以选择来我们这里共同交流,群:240448376,很多大神在这里切磋学习,不懂可以直接问,晚上还有大牛免费直播教学。

注:加群要求

1、具有一定工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加,有些应届生和实习生也可以加。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。

3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。

5.阿里Java高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

PS:现在主要讲解的内容是(反射原理枚举原理与应用注解原理常用设计模式、正规表达式高级应用、JAVA操作Office原理详解JAVA图像处理技术,等多个知识点的详解和实战)

6.小号或者小白之类加群一律不给过,谢谢。

最后,每一位读到这里的网友,感谢你们能耐心地看完。觉得对你有帮助可以给个喜欢!希望在成为一名更优秀的Java程序员的道路上,我们可以一起学习、一起进步

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 24
码字总数 41519
作品 0
私信 提问
fbf的书单,欢迎分享,欢迎更新

本人看过的以下书值得推荐的,列出来的就是值得推荐的 这个颜色是一般推荐 这个颜色是强烈推荐 这个颜色是神作,收藏吧 物联网:生产力的变革 李虹著 开拓视野,一般 源码中国:全球IT外包新原...

fbf
2015/03/16
0
0
【有奖书评】JAVA 7来袭,还看 Java 你就OUT了

从1995年至今,Java已经超过15个年头,经过这些年的演进,Java已不仅是个程序语言,也代表了解决问题的平台(Platform),更代表了原厂、各个厂商、社群、开发者与用户沟通的成果。若仅以程序语...

louise
2012/08/31
12.4K
123
Java培训实战教程之Java基础知识精华部分(一)(二)(三)

Java培训实战教程之Java基础知识精华部分(一)_java概述 =============================================================================Java培训实战教程之Java基础知识精华部分(一)_java概...

黑泽明军
04/13
0
0
JVM系列开篇:为什么要学虚拟机?

跟许多人一样,我一开始接触 Java 虚拟机只是因为面试需要用到,所以硬着头皮看看。所以很多人对于为什么要学虚拟机这个问题,他们的答案都是:因为面试。但我经过了几年的学习和实战,我发现...

陈树义
11/06
0
0
BAT等大厂Android面试书单和知识点清单

java是Android开发的基础,在BAT的初面中,会涉及到比较多的java基础知识,所以比较重要,下面我介绍的书籍内容是由浅到深。 1.Thinking in java:这本书被称为Java的三大圣经之一,虽然书比...

android自学
07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

前端工程师的知识体系

Front-End Engineer 这词很好的体现了前端的特(ku)殊(bi)性。 下图是张克军绘制的前端工程师图解: 前端开发的核心是HTML + CSS + JavaScript。本质上它们构成一个MVC框架,即HTML作为信息模...

文文1
7分钟前
0
0
随行付微服务测试之性能测试

背景 传统性能测试更多的是以事务为核心,更多的是由单个或者多个事务构成业务场景进行压测。全链路压测指完全引入相关联的系统,尽量真实模拟线上硬件环境,更多的是以请求为核心,完全模拟...

马力-随行付
10分钟前
0
0
JavaScript是如何工作的:事件循环和异步编程的崛起 + 5种使用 async/await 更好地编码方式!

摘要: 深度理解JS事件循环!!! 原文:JavaScript是如何工作的:事件循环和异步编程的崛起+ 5种使用 async/await 更好地编码方式! 作者:前端小智 Fundebug经授权转载,版权归原作者所有。...

Fundebug
10分钟前
0
0
hanlp在Python环境中的安装失败后的解决方法

Hanlp是由一系列模型与算法组成的javag工具包,目标是普及自然语言处理再生环境中的应用。有很多人在安装hanlp的时候会遇到安装失败的情况,下面就是某大神的分享的在python环境中安装失败的...

左手的倒影
32分钟前
1
0
【更新】Infragistics Ultimate UI for WPF v18.2(二):分类图

下载Infragistics Ultimate UI for WPF最新版本 Infragistics Ultimate UI for WPF是一款提供高速的网格和图表,轻松创建仿Office应用程序的WPF界面框架,从广度和深度两方面使得开发者在缩短...

电池盒
32分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部