- 浏览: 36509 次
- 性别:
- 来自: 深圳
最新评论
-
zh_harry:
ThreadLocal独家解秘 附JDK源码http://li ...
JDK的ThreadLocal理解(一)使用和测试 -
shenzhang722:
关于二叉排序树你可以看下jdk里的PriorityQueue类 ...
java实现二叉排序树 -
aty:
好的,谢谢,以后注意。第一次发博客,不熟悉呵呵
java实现二叉排序树 -
bitray:
代码要是放在code标签之中,我看这个文章的格式会更好一些
java实现二叉排序树
文章列表
1、对一个线程调用2次以上的start()方法会报错。
ChildThread t1 = new ChildThread("thread1"); t1.start(); t1.start();
2、对于已经启动的线程,调用setDaemon会报错
class ChildThread extends Thread {
@Override public void run() { System.out.println(this.name + "--child thead begin");
setDaemon ...
最新在看xwork的源代码,XmlConfigurationProvider这个类,用来实现解析xwork.xml配置文件。该类使用了有向图这种数据结构,来判断是否存在<include>元素的循环包含。
有向图的实现如下:
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.NoSuchElementException;
...
java中的null对象和"null"字符串,JSonObject会默认对这些数据进行处理。
考虑到这样一种场景:发送方和接收方通过json格式数据进行交互
// key = null,这种键值对会直接被json-lib忽略
// key = "null",这种值会被json-lib转换null
public static String sendJmsString()
{
JSONObject selfObj = new JSONObject();
selfObj.put(" ...
Oracle的in语句,不能超过1000个值,否则会报sql出错。
public String splitInCondition(List<String> dataList, String columnName, String type)
{
String relation = null;
if ("in".equalsIgnoreCase(type))
{
relation = " OR ";
}
else
...
上一遍博客
http://aty.iteye.com/blog/1913734 写道
JDK的ThreadLocal理解(一)使用和测试
,对TheadLocal的测试和使用进行了介绍,这一步将介绍一下ThreadLocal的实现原理。
现在附上JDK的ThreadLocal的set方法源码
public void set(T value)
{
//获取当前进入该方法的线程
Thread t = Thread.currentThread();
//取出当前线程的私有变量map
...
ThreadLocal的使用可以参考struts2的ActionContext,个人觉得这种使用方式是比较优雅的:
1、ThreadLocal是业务无关的对象,对于开发代码来说,越少使用越好。
这样能够尽可能的减少技术细节分散开发者对业务逻辑的关注
public class ActionContext implements Serializable
{
static ThreadLocal<ActionContext> actionContext = new ThreadLocal<ActionContext>();
/ ...
阅读了JDK的Thread、ThreadLocal源代码之后,有几点设计心得:
Thread类,有一个ThreadLocal.ThreadLocalMap类型的成员变量
/* ThreadLocal values pertaining to this thread. This map is maintained
* by the ThreadLocal class. */
ThreadLocal.ThreadLocalMap threadLocals = null;
这个变量不是static的,每个线程对象都会有自己的threadLocals ...
刚开始使用java线程的时候,使用都是Thread或Runnable接口。最近发现java并发包下,提供了一个与Runnable接口类似的Callable接口。Callable提供了比Runnable更灵活和宽松的call()。
Callable类似于Runnable接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务
Callable经常和java线程池一起启用:
//创建线程池
ExecutorService threadPool = Executors.newSingleThreadExecutor();
//TaskCallabl是C ...
package thread.local;
public class Test
{
// 线程局部变量:初始值默认是null
private final static InheritableThreadLocal<String> basicholder = new InheritableThreadLocal<String>();
// 存放的是引用
private final static InheritableThreadLocal<St ...
JDK提供了InheritableThreadLocal类,用来让子线程继承父线程的值。在创建子线程的时候,子线程会接收此刻父线程线程局部变量的初始值。
package thread.local;
public class Test
{
// 线程局部变量:初始值默认是null
private final static InheritableThreadLocal<String> parentholder = new InheritableThreadLocal<String>();
// 线程局部变量:初始值默认是nu ...
阅读《Spring 3.x企业应用开发实战》中的aop章节内容:
AOP alliance (AOP联盟) :众多开源AOP项目的联合组织,目的是为了制定一套标准规范来描述AOP,定义标准AOP的接口,以方便各种遵守该标准的具体aop实现可以相互调用,也为了方便使用aop的项目能够平滑从一个aop实现迁移到另一个aop实现上。官方网站http://sourceforge.net/projects/aopalliance/
AspectJ::AspectJ是语言级的AOP实现,它扩展了java语言,定义了aop的语法,能够在编译期提供横切代码的织入,所以它有一个专门的编译器 ...
java提了一个线程异常处理类,当线程执行的时候如果出现异常,可以调用该函数,进行一些善后工作,比如释放资源、清理数据等工作。通过这种方式,线程不需要关注因为异常导致资源不能释放等问题。
package thread.exception;
/*
* 1、Thread的run方法是不抛出任何检查型异常(checked exception)的,但是它自身却可能因为一个异常而被终止
* 2、主线程之所以不处理子线程抛出的RuntimeException,是因为线程是异步的,子线程没结束,主线程可能已经结束了
*
* http://blog.csdn.net/wh62 ...
ThreadLocal是java中轻量级的线程同步解决方法,为了达到线程安全的目的,采用的是空间隔离的方法。使用方式如下:
1、定义2个会被多线程共享的bean,一个使用ThreadLocal,一个不使用任何线程同步措施
package bean;
public interface IShareBean
{
public void get();
public void autoInc();
}
package bean.impl;
import bean.IShareBean;
public class SafeS ...
最近在看jdk的动态代理和aop的一些概念,发现jdk的动态代理,网上大多写的都很简单,基本都是基于Object类型使用的,导致难以理解, 使用容易出错。按照个人的理解,组织了下jdk动态代理的结构。
util包 : 放置 ...
CSDN上的十篇将JMS的博客很好,浅显易懂,适合初学者了解jms。
资料地址是:
http://blog.csdn.net/iamfafa/article/category/799158