- 浏览: 133513 次
- 性别:
最新评论
-
panamera:
楼主有没有测试过,没有发你说什么锁不成功,都不知道你想表达什么 ...
JAVA Synchronized 关键字锁实例和锁CLASS对象的区别 -
ouchuquan:
Prototype creates a brand new i ...
spring 中prototype 和 reqeust的区别 -
ljn799498049:
请问倒数第2个线程栈的调用顺序的图是用什么画的啊 ,还是ecl ...
Spring编程式事务与声明式事务源码分析 -
hxwabc:
其实没有必要这么麻烦,只要ThreadLocal是static ...
ThreadLocal内存泄露分析 -
China2010pan:
...
FutureTask 源码解析
文章列表
为了更好的提供文章,我已经将博客迁移到了自建的博客网站上,我将更多的从源码分析的角度入手,为大家带来更多的深度文章,请大家继续关注我~! 博客地址:www.liuinsect.com
_______________________________________________________________________________
站在使用者的角度,future是一个经常在多线程环境下使用的Runnable,使用它的好处有两个:
1. 线程执行结果带有返回值
2. 提供了一个线程超时的功能,超过超时时间抛出异常后返回。
那,怎么实现future这种超时控制呢 ...
为了更好的提供文章,我已经将博客迁移到了自建的博客网站上,我将更多的从源码分析的角度入手,为大家带来更多的深度文章,请大家继续关注我~! 博客地址:www.liuinsect.com
本文描述了在某种特殊场景下JDK编译器对 Java 基本类型的封包操作。
其原理非常简单,但是现象却非常 非常的迷惑人。可以让我们从另外一个角度看待jdk对基本类型的封包。
本文代码的原意是想找到一种当future超时后,可以尽量快的终止掉还在运行的future(事实上,future超时后(在主线程抛出超时异常后),future线程并不会停止,直到它运行结束,自然消亡。)
先上代码:
主函数:
package thread.InteruptTest;
import java.io.IOException;
import java.util.conc ...
本例子演示了另外一种修改变量值的方式,希望可以让读者从另外一个角度看待变量,欢迎大家讨论。
请看例子
package concurrentTest;
import java.lang.reflect.Field;
import sun.misc.Unsafe;
/**
* jdk 提供了一个unsafe类来直接通过 内存地址来操作变量
* 该例子演示了 另外一种变换 变量值的方式
* @Package concurrentTest
* @author liukunyang
* @date 2013-12-11 下午02:36:23
* @vers ...
第一步:
找到apache的httpd.conf 文件,加入下面这段话:
#设置Apache与Tomcat之间的连接,让Apache将请求转发到Tomcat中去: LoadModule jk_module modules/mod_jk.so
#设置worker队列,这个文件中实现负载均衡的配置 JkWorkersFile conf/workers.properties
#设置什么请求交由负载均衡控制器处理 JkMountFile conf/uriworkermap.properties #指定tomcat监听配置文件地址,也记录了它的错误信息。 JkLogFi ...
这篇文章为自己动手后的操作记录,以下是我这次主从配置的过程,请大家多多指教:
环境:
1. 两台windows7笔记本。
2. 安装数据库版本,使用 select version();
看到主库上是:
mysql> select version();
+-------------------------+
| version() |
+-------------------------+
| 5.0.45-community-nt-log |
+----- ...
为了更好的提供文章,我已经将博客迁移到了自建的博客网站上,我将更多的从源码分析的角度入手,为大家带来更多的深度文章,请大家继续关注我~! 博客地址:www.liuinsect.com
_______________________________________________________________________________
MultiThreadedHttpConnectionManager 是HTTP Client中用来复用连接的连接管理类,可以通过
MultiThreadedHttpConnectionManager n = ...
直接copy 代码后运行 看效果:
package Thread;
public class WaitAndNotifyTest {
public synchronized void wantTowait(int i ){
try {
System.out.println( i + " ready to wait ");
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printSta ...
为了更好的提供文章,我已经将博客迁移到了自建的博客网站上,我将更多的从源码分析的角度入手,为大家带来更多的深度文章,请大家继续关注我~! 博客地址:www.liuinsect.com
_______________________________________________________________________________
这篇文章,主要解决一下疑惑:
1. ThreadLocal.ThreadLocalMap中提到的弱引用,弱引用究竟会不会被回收?
2. 弱引用什么情况下回收?
3. JAVA的ThreadLocal和在什么情况下会内存泄 ...
CXF传输复杂对象问题
- 博客分类:
- CXF
这两天在做使用CXF框架的时候遇到了一个传输复杂对象的问题,问题如下:
背景:
首先,我定义一个JavaBean WebServiceResult 里面有这么几个属性:
private boolean success =false;
private Map<String,List<Topic>> result = new HashMap<String,List<Topic>>();
private ArrayList<Topic> topics ;
private transient String r ...
前段时间某功能在测试机器上出现乱码,情况如下:
现象:
调试搜索功能时,通过doGet方法提交到后台的中文参数在本地和开发测试机器上为乱码(Action层),在测试人员测试机器上为中文.(Action层)
推断:
怀疑是两台机器(开发人员测试机器,测试人员测试机器)环境不同:
1. 先从tomcat查起,在他们各自的tomcat的配置文件server.xml中的Connector标签,有句指定URL编码的配置:URIEncoding="UTF-8" ,
开发测试机器上没有配置(默认是IDO-8859-1),测试人 ...
比较有意思的一段代码,可以先运行看效果再将注释取消后看运行效果,上代码
/**
*
* 每个对象实例化的时候,都要路过static方法
* 但是编译器会保证static快的执行是原子的,即便是多线程过来也要一个个执行
* 只不过,只有第一个实例动作的时候static快内的代码被执行
* 其他实例只是“路过”
* 即,每个实例都要走到static块,但是static块只会执行一次,
* 是通过调用该类的 client方法导致的,该方法只在类被加载的时候JVM调用
* @author liuinsect
*
*/
public class Static ...
Spring编程式事务与声明式事务源码分析
- 博客分类:
- spring
最近在工作中用到了spring的事务管理功能,到项目代码中一看,有声明式的,有编程式的,比较混淆,所以对spring的事务管理做了一个简单的分析,主要回答自己一下几个问题:
1. 声明式事务怎么处理事务?
2. ...
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class IOTest {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) thr ...
本文介绍的是使用JDK自带的RMI包,实现简单的远程方法调用功能,虽有众多局限,在生产环境上未必能用上,但对于理解原理是非常有好处的,请深刻理解。
说明:
1. 本文使用的是JDK1.6+的版本
2. 文中会使用到rmic功能,这个工具是在本地生成Stub和Skeleton的工具,在JAVA_HOME\bin文件中有自带,
若想使用,请在path环境变量中添加%JAVA_HOME%\bin 目的是将JAVA_HOME\bin下的命令添加到path变量中,
使得rmic命令在dos的任何目录下使用。
先上代码,服务端类:
import java.r ...