transient和synchronized这两个关键字没什么联系,这两天用到了它们,所以总结一下,两个关键字做个伴!

transient

持久化时不被存储,当你的对象实现了Serializable接口,这个对象就可以被存储到磁盘上了,而有一些信息比较敏感时,不想被持久化,就可以声明为transient,这时它只在内存中存在,保存到磁盘时将被忽略!

public class ExcelBean implements Serializable {
private static final long serialVersionUID = 1L;
private String headTextName;
private String propertyName;
private Integer cols = 0;
private transient XSSFCellStyle cellStyle;
}

上面代码中,cellStyle这个复杂对象不会被文件流写到磁盘里。

synchronized

同步关键字,当你的对象被实现化后,里面的方法可能被多个线程调用,这在web环境下很常见,如果希望为方法加个锁,让方法一个一个线程排队执行,最简单的方法就是加synchronized关键字,它可以保持这个方法同一时刻只有一个线程执行它。

  /**
* 方法强制为同步方法.
*/
synchronized void queue() {
try {
System.out.println("print synchronized result:" + LocalDateTime.now().toString());
Thread.sleep(5000);
} catch (Exception ex) { }
} @Test
public void synchronizedTest() throws Exception {
for (int i = 0; i < 5; i++) {
new Thread(() -> queue()).start();
}
Thread.sleep(500000); }

运行的结果如下,它总会被阻塞4秒钟,没有任务两个线程打印的时间相同。

print synchronized result:2018-12-13T14:31:13.010
print synchronized result:2018-12-13T14:31:18.015
print synchronized result:2018-12-13T14:31:23.018
print synchronized result:2018-12-13T14:31:28.023
print synchronized result:2018-12-13T14:31:33.028

transient和synchronized的使用的更多相关文章

  1. 项目编码规范(Ali)

    一.研发流程规范 二.SQL编码规范 数据库命名规范:数据库名一律小写,必须以字母开头.库名包含多个单词的,以下划线“_”分隔.如果采用分库方案,分库编号从“0”开始,用“0”左补齐为四位. 表名规范 ...

  2. [转]Java反射之如何判断类或变量、方法的修饰符(Modifier解析)

    Java针对类.成员变量.方法,有很多修饰符,例如public.private.static.final.synchronized.abstract等,这些修饰符用来控制访问权限或其他特性. 本文就用 ...

  3. Google Java编程风格指南

    出处:http://hawstein.com/posts/google-java-style.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Comm ...

  4. 谷歌Java编程规范

    Google Java编程风格指南 January 20, 2014 作者:Hawstein 出处:http://hawstein.com/posts/google-java-style.html 声 ...

  5. 代码规范、GitHub提交源码的标准 答题人-杨宇杰

    1.格式与命名规范1.1 缩进 使用Tab缩进,而不是空格键1.2 换行 每行120字符 if,for,while语句只有单句时,如果该句可能引起阅读混淆,需要用" {"和&quo ...

  6. 资料推荐--Google Java编码规范

    之前已经推荐过Google的Java编码规范英文版了: http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 虽然这篇文章的 ...

  7. checkstyle配置文件说明

    属性说明 basedir代码所在的位置 AbstractClassNameformat: 定义抽象类的命名规则 PackageNameformat: 定义包名的命名规则 TypeNameformat: ...

  8. java之google style

    Google的Java编码规范英文版: http://google-styleguide.googlecode.com/svn/trunk/javaguide.html Google的Java编码规范 ...

  9. Google Java编程风格指南中文版

    作者:Hawstein出处:http://hawstein.com/posts/google-java-style.html声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Cre ...

随机推荐

  1. [转]webpack中require和import的区别

    webpack中可以写commonjs格式的require同步语法,可以写AMD格式的require回调语法,还有一个require.ensure,以及webpack自己定义的require.incl ...

  2. PCB铺铜

    问:为何要铺铜?答:一般铺铜有几个方面原因.1.EMC.对于大面积的地或电源铺铜,会起到屏蔽作用,有些特殊地,如PGND起到防护作用.2.PCB工艺要求.一般为了保证电镀效果,或者层压不变形,对于布线 ...

  3. js常会问的问题:找出字符串中出现次数最多的字符。

    一.循环obj let testStr = 'asdasddsfdsfadsfdghdadsdfdgdasd'; function getMax(str) { let obj = {}; for(le ...

  4. BZOJ.5319.[JSOI2018]军训列队(主席树)

    LOJ BZOJ 洛谷 看错了,果然不是\(ZJOI\)..\(jry\)给\(JSOI\)出这么水的题做T3么= = 感觉说的有点乱,不要看我写的惹=-= 对于询问\(l,r,k\),设\(t=r- ...

  5. S0.6 直方图均衡化

    S0.6 直方图均衡化 直方图均衡化能提高图像的质量 累积直方图 这是后面均衡化所要知道的先验知识. 如果说直方图统计的是等于像素值的数量,那么累积直方图统计的就是小于等于像素值的数量 均衡化步骤 我 ...

  6. 基础java中的package的命名规则和import的使用

    包的命名一般用公司域名但是注意域名后辍要放前面如下 package com.cnblogs.i.Cat//对应地址是com/cnblos/i/cat.class也就是Cat.class的地址 如果想将 ...

  7. hadoop2-elasticsearch的安装

    本文主要讲elasticsearch-2.2.1的安装过程. 准备工作: 1.搭建虚拟机 你需要先参考 hadoop2集群环境搭建 把你的虚拟机搭建起来-hadoop环境可以先不用搭建(完成步骤1到步 ...

  8. 关于H5的一些杂思细想(一)

    作为一名前端程序媛,虽然整天和代码打交道,但是还是有一颗小清新的内心,虽然有时候加起班来不是人,但是空闲的时候还是会整理一下思绪,顺便整理一下自己,两个多月的加班,一直没有更新,今天就把自己最近做的一 ...

  9. 关于height、offsetheight、clientheight、scrollheight、innerheight、outerheight的区别

    二.也是平时经常用到的offsetheight 它返回的高度是内容高+padding+边框,但是注意哦,木有加margin哦,当然一般也木有啥需要把margin加进去的,以上代码为例,结果显示上图h2 ...

  10. Java后期拓展(一)之Redis

    1.NoSQL数据库简介 2.Redis的介绍及安装启动 3.Redis的五大数据类型 4.Redis的相关配置 5.Redis的Java客户端Jedis 6.Redis的事务 7.Redis的持久化 ...