并发编程总结之线程间的通信

摘要:使用wait/notify方法实现线程间的通信。wait和notify必须配合synchronized关键字使用,wait方法释放锁notify方法不释放锁

线程间通信概念

线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体,线程间的通信就成为整体的必用方式之一。当线程存在通信指挥,系统间的交互会更加强大,在提高CPU利用率的同时还会使开发人员对线程任务在处理的过程中进行有效的把控与监督。

wait/notify实现线程通信

使用wait/notify方法实现线程间的通信。注意这两个方法都是Object的类方法,换句话说Java为所有的对象提供了这个两个方法。
1.wait和notify必须配合synchronized关键字使用
2.wait方法释放锁notify方法不释放锁

查看更多

并发编程总结之volatile

摘要:本节主要介绍了 volatile关键字的作用是使变量在多个线程间可见,但是不具有原子性,以及volatile的运行内存介绍。

  1. 在java中,每个线程都会有一块工作内存区,其中存放着所有线程共享主内存中变量值的拷贝。当线程执行时,它在自己的工作区内存中操作这些变量。为了存取一个共享的变量,一个线程通常会先获取锁定清除它的内存工作区,把这些共享变量从所有线程的共享内存中正确的装入到它自己所在的工作内存中,当线程解锁时,保证该工作内存中变量的值写回到共享内存中。

    查看更多

并发编程总结之synchronized细节问题

摘要:本节主要介绍了并发编程下怎么避免数据脏读和什么是synchronized的可重入锁,synchronized的可重入锁的几种使用场景下,是线程安全的。以及一些细节的synchronized使用问题和synchronized常见代码块示例Code可以直接Copy运行。


脏读

什么是脏读

对于对象的同步和异步方法,我们在设计程序,一定要考虑问题的整体性,不然会出现数据不一致的错误,最经典的错误就是脏读(DirtyRead)。

示例Code

业务整体需要使用完整的synchronized,保持业务的原子性。

查看更多

并发编程总结之多线程基础

线程安全

线程安全概念

  1. 当多个线程访问访问某一个类(对象或方法)时,这个类或对象或方法始终能表现出正确的行为或我们想要的结果,那么这个类(对象或方法)就是线程安全的。
  2. synchronized:可以在任意的对象方法上加锁,而加锁的这段代码称之为互斥区或者临界区

    代码示例说明1

    运行main方法,main方法里有5个线程t1到t5,同一时间启动去访问MyThread类的Run方法。

    查看更多

Bean Mapping之Orika的项目运用

前言 在JavaEE开发过程中,我们经常会把持久层的实体对象copy给VO,BO等,用于快速将持久层中的对象释放如下图所示。但很多时候BO,VO和Entity的结构都是类似的。刚开始通过写很多冗长的b.setF1(a.getF1())这样的代码来实现对象的Copy,后来逐渐延伸出Spring BeanUtils, CgLib BeanCopier, Apache BeanUtils, Dozer等快速实体映射工具jar。性能对比可以参考这篇文章:http://www.cnblogs.com/kaka/archive/2013/03/06/2945514.html

查看更多

在STS或eclipse中安装Lombok并使用

lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码。特别是相对于 POJO,使用相应的注解可以简化整个代码。
lombok 的官方网址:http://projectlombok.org/ ,从官网下载

查看更多

云计算Saas的简单描述以及多租户实现和Saas部署图

一.SAAS概述与概念

1.1 Saas概述

  • 传统软件开发模式是软件即产品,但是云计算Saas是软件即服务,也就是说使用软件就像使用服务一样。SaaS的应用越来越流行了,它作为越来越多的公有云提供基础的应用平台服务,有效减少中小企业的前期投入及运营成本,使得中小企业在成立发展过程中,把更多的精力投入于发展业务,更多的信息化管理不用关注。

    查看更多

Hexo使用技巧汇总

摘要: 本文主要记录在Node,hexo等使用经验。

查看更多

CloudStack中云主机的UTC时间转为本地时间

CloudStack UTC时间处理

CloudStack项目中使用的时间是UTC时间,具体什么是UTC时间大家可以百度,但是我们需要的时间是正常的时间,所以在国泰君安开发测试云中,同步资源管理中虚拟机的同步管理,需要对虚拟机的时间格式化进行转换。工具类如下,关键是时间格式的问题,时间格式为yyyy-MM-dd’T’HH:mm:ss+SSSS。

查看更多