IT培训网 - IT职场人学IT技术上IT培训网
什么是java并发性 深度剖析Java的并发性
时间:2018-03-14 14:31:01 来源:Java培训网 作者:IT培训网 已有:名学员访问该课程
Java的并发性是什么?对于java程序员来讲,这并不陌生,但是想要深入了解,却有一定难度,今天IT培训网专业老师给大家深入探讨一下java的并发性。
什么是java并发性?
Java是一种多线程编程语言,我们可以使用Java来开发多线程程序。 多线程程序包含两个或多个可同时运行的部分,每个部分可以同时处理不同的任务,从而能更好地利用可用资源,特别是当您的计算机有多个CPU时。多线程使您能够写入多个活动,可以在同一程序中同时进行操作处理。
根据定义,多任务是当多个进程共享,如CPU处理公共资源。 多线程将多任务的概念扩展到可以将单个应用程序中的特定操作细分为单个线程的应用程序。每个线程可以并行运行。 操作系统不仅在不同的应用程序之间划分处理时间,而且在应用程序中的每个线程之间划分处理时间。
Java并发过程中的三个特性:原子性、有序性、可见性
在了解Java并发性的过程中有三点特性需要了解:原子性、有序性和可见性。原子性指的是一个操作不可中断的特性,一旦一个操作线程开始,就不应被其他线程所干扰;有序性是指按照代码的先后顺序来执行代码,重新排序不影响单线程程序执行,但会影响到并发性的正常;可见性是指当多个线程访问同一个变量时,其中一个线程的变量值若是被修改,其他线程也可看到,Java提供了volatile关键字确保可见性。
选择器对象的特点是线程安全,但其中包含的键集合并不是。通过keys( )和selectKeys( )返回的键的集合可以为Selector对象内部的Set对象集合的直接引用。这些集合可以在任意的时间进行改变。已注册键的集合是只读的。当你尝试改动它,他就会现实不支持。尚学堂陈老师指出,在观察它们的时候,它们可能发生了改变的话,您仍然会遇到麻烦。Iterator对象是快速失败的(fail-fast):如果底层的Set被改变了,它们将会抛出异常,因此如果您期望在多个线程间共享选择器和/或键,请对此做好准备。您可以直接修改选择键,但请注意您这么做时可能会彻底破坏另一个线程的Iterator。
Selector类的close( )方法和slect( )方法的同步方式相同,所以也可能会阻塞。在过程的选择中,所有对close( )的调用都可能阻塞,直到选择停止,或者执行选择的线程进入睡眠。在后续的过程中,线程的执行与选择将会在执行关闭的线程获得锁是立即被唤醒,进而将选在器关闭。
Java并发性学习过程中需要注意的问题
一是如果在多线程中并发地访问一个选择器的键的集合的时候存在一些问题,可以采取一些步骤进行合理地同步访问。当执行选择操作时,选择器在Selector对象上进行同步,然后是已注册的键的集合,最后是已选择的键的集合,按照这样的顺序。已取消的键的集合也在选择过程的的第1步和第3步之间保持同步(当与已取消的键的集合相关的通道被注销时)。
二是在多线程的场景中,如果您需要对任何一个键的集合进行更改,不管是直接更改还是其他操作带来的副作用,您都需要首先以相同的顺序,在同一对象上进行同步。需要注意的是锁的过程。若是竞争的线程未能用相同的顺序请求锁,就将会有死锁的可能。如果可以保证其他线程不会同时访问选择器,则可以不用进行同步。
Java的并发性与多线程密切相关,也是Java语言中最重要的特性之一,在学的时候可结合实例来灵活掌握。
每期开班座位有限.0元试听抢座开始!
温馨提示 : 请保持手机畅通,咨询老师为您
提供专属一对一报名服务。
- 上一篇:天津大数据培训机构数哪家最正宗
- 下一篇:西安有名气的计算机培训机构是哪家