实验三 敏捷开发与XP实践 ============ 安装alibaba 插件,解决代码中的规范问题 根据老师的教程:打开 ...在搜索框输入 即可看到 插件,点击 进行安装,然后重启IDEA生效 在IDEA左目录栏里右键 文件图标,选择 ,然后根据下方报错里修改自己的代码格式。 规范例代码截图 学 ...
分类:
其他好文 时间:
2018-05-04 01:39:15
阅读次数:
187
在并发编程中,需要处理两个关键问题:线程之间如何通信,以及线程之间如何同步。通信是指线程之间如何交换信息,在命令式编程中,线程之间的通信机制有两种:内存共享和消息传递。 同步是指程序中用于控制不同线程间的操作发生相对顺序的机制。在共享内存并发模型中,同步是显性进行的。程序员需要显性设置某段代码在线程... ...
分类:
编程语言 时间:
2018-05-02 16:04:38
阅读次数:
211
一 . 概述 之前我们提到了线程并发出现的安全问题,最为简单的一种处理方案就是使用互斥锁. 在java之中任何一个对象都可以作为一个互斥锁,这种互斥锁通常配合synchronized来使用. 二 . 测试用例 上面的例子描述的问题很简单: 创建一个方法,这个方法可以为一个共享变量不断的自增. 现在创 ...
分类:
其他好文 时间:
2018-05-01 20:36:29
阅读次数:
132
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开 ...
分类:
其他好文 时间:
2018-05-01 00:35:00
阅读次数:
159
前言项目地址:https://github.com/bajdcc/jMiniLang演示视频:https://www.bilibili.com/video/av13294962jMiniLang是一个Java实现的基于栈的解释器,包含了语法分析和虚拟机等两大内容。基于这个虚拟机呢,用脚本搭建了一个简... ...
分类:
其他好文 时间:
2018-04-30 11:58:26
阅读次数:
174
这一节来讲一讲java.util.concurrent这个包里的一些重要的线程安全有关类。 synchronized容器 synchronized容器就是把自己的内部状态封装起来,通过把每一个public方法设置成同步来控制对共享变量的访问的容器。主要包括Vector, Hashtable,以及Co ...
分类:
其他好文 时间:
2018-04-29 22:13:33
阅读次数:
141
高效并发编程 并发编程的基本模型包括,通过消息机制来管理运行顺序的message passing, 通过互斥保护共享的shared memory。 线程同步的基本原则 1. 最低限度共享变量,考虑使用immutable对象 2. 尽量减小锁粒度 3. 互斥器和条件变量足以完成绝大多数任务,尽量使用高 ...
分类:
编程语言 时间:
2018-04-29 16:27:36
阅读次数:
214
java高并发之synchronized synchronized可以保证代码块或者方法在运行时,同一时刻只有一个方法可以进入临界区域,同时也可以保证共享变量的内存可见性 synchronized可以使用在三种情况: 1. 普通同步方法,锁是当前实例对象 2. 静态同步方法,锁是当前类的class对 ...
分类:
编程语言 时间:
2018-04-24 22:23:57
阅读次数:
247
Volatile的特征:A、禁止指令重排(有例外) B、可见性Volatile的内存语义:当写一个volatile变量时,JMM会把线程对应的本地内存中的共享变量值刷新到主内存。当读一个volatile变量时,JMM会把线程对应的本地内存置为无效,线程接下来将从主内存中读取共享变量。Volatile的重排序1、当第二个操作为volatile写操做时,不管第一个操作是什么(普通读写或者vo
分类:
编程语言 时间:
2018-04-24 11:50:48
阅读次数:
154
Volatile的特征: A、禁止指令重排(有例外) B、可见性 Volatile的内存语义: 当写一个volatile变量时,JMM会把线程对应的本地内存中的共享变量值刷新到主内存。 当读一个volatile变量时,JMM会把线程对应的本地内存置为无效,线程接下来将从主内存中读取共享变量。 Vol ...
分类:
编程语言 时间:
2018-04-20 16:03:42
阅读次数:
185