Java线程死亡的几种情况

Java线程会议如下三种方式结束,结束后就处于死亡状态 1、run()或者call()方法执行完成,线程正常结束; 2、线程抛出一个未捕获的Exception或Error; 3、直接调用该线程的stop()方法来结束该线程;   注意:当主线程结束时,其他线程不受任何影响,并不会随之结束。一旦子线程启动起来后,它就拥有和主线程相同的地位,不会受到主线程结束的影响。 为了测试某个线程是否已 … 继续阅读Java线程死亡的几种情况

通过JVM堆栈分析出现大量线程的原因

最近收到线上Tomcat线程数目超出的报警,于是想要分析下问题的原因: 首先进入线上,使用ps -aux命令,查看jvm进程,可以得到运行tomcat的jdk的地址: /home/work/app/.jdk/bin/java 于是就知道了jdk的jstack、jps等命令的目录,然后找到jvm进程

得到了jvm的tomcat进程是2 … 继续阅读通过JVM堆栈分析出现大量线程的原因

想要加悲观锁可是数据行还不存在怎么办?

两个并发事务想要对同一个KEY的数据进行更新,但是如果这个KEY的数据行还不存在的话,那么select .. for update当然不能锁住这行记录,想当然的想到,可不可以先insert一下,然后在悲观锁呢? 那么引入了一个新的问题,如果两个并发事务同时insert的话,就会插入重复的数据,如果insert的unique key重复的话,第二个线程会报错的,有没有更优雅的方法? 答案是MySQL … 继续阅读想要加悲观锁可是数据行还不存在怎么办?

Java堆溢出OutOfMemoryError之代码实例和原因分析

本文演示了编写代码使得出现”java.lang.OutOfMemoryError: Java heap space”异常,分析GC日志得出OOM的原因,同时对堆转储文件进行分析,以查看把Heap塞满的罪魁祸首; 实例代码 这段代码来自《深入理解Java虚拟机-JVM高级特性与最佳实践》一书:

在eclipse … 继续阅读Java堆溢出OutOfMemoryError之代码实例和原因分析

使用javap命令或者eclipse的Bytecode visualizer插件阅读java字节码文件

阅读java的class文件,最常用的方法是jdk自带的javap命令,但是在eclipse有Bytecode visualizer插件,也可以很好地实现阅读; 直接阅读class文件,能够了解一下代码如何执行的内幕,以下面这个代码为例

test()方法很多人都知道返回true,但是为什么会这样呢?很多人可能说不清楚。我们分别用两种 … 继续阅读使用javap命令或者eclipse的Bytecode visualizer插件阅读java字节码文件

Java怎样单测void类型的方法?

Java的Sevice层会有很多void类型的方法,比如save*、update*,这类方法只是做一些更新,不会有返回值,其单测不能根据方法的返回值来编写,只能采用特殊方法; 本方法环境:Mockito、testng 被测试的方法:

测试的方法:

如注释所示,如果加了 … 继续阅读Java怎样单测void类型的方法?

《Spring in action》3rd中SpringPizza项目的运行方法

《Spring in action》3rd中SpringPizza项目和其他的不同,使用gradle编译的,尝试了好久都没能run起来,最后按照一篇文章的做法,将其转换成maven项目,然后就执行成功了。 1、下载代码 下载地址:http://www.manning.com/walls4/sia3-code.zip,解压代码 2、在\sia3-code\SpringPizza目录下建立pom.xm … 继续阅读《Spring in action》3rd中SpringPizza项目的运行方法

Java怎样创建两个KEY(key-pair)的MAP

就像在XY坐标系中,一个X刻度、一个Y刻度,会对应图上的一个点,即pair(x, y) – > point,那么就有创建一个点,或者根据(x, y)来寻求一个点的需求,如果用Python的语法表达,是这个样子:

然而在JAVA中却变得不容易,骨钩了一下,有这么一些方法: 使用嵌套MAP [crayon-5d58bb … 继续阅读Java怎样创建两个KEY(key-pair)的MAP

Java枚举类型代码的二逼写法和艺术写法

最近遇到一种需求场景:使用一个类封装Java服务端返回的(返回状态码,返回信息字符串)信息,比如(0,操作成功)、(1,新增失败)、(2,查询失败)等状态。作为一枚Java屌丝,我想到这种常量信息最好写到一个单独的类里面,并且用public static final的形式修饰,为了将返回码code和返回信息msg两者绑定起来可以提供一个公用方法。我做了以下两个努力,一是将两个返回码和返回信息的变量 … 继续阅读Java枚举类型代码的二逼写法和艺术写法

将普通Maven Spring项目转换成Web项目的方法

最近在按照李刚的《疯狂J2EE》一书学习Spring,其中第7章的一些代码是ant编译的,而公司用的是Maven,所以想要将其部署并转换成Maven Spring Web项目来执行一下。 本文用的是《疯狂j2ee》第7章的request_scope代码; 1、建立普通的maven project; 2、转换成web项目,这里选2.5版本,注意有的WEB项目的webcontent目录会有所不同,可以 … 继续阅读将普通Maven Spring项目转换成Web项目的方法