自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

hotspot1.7 ThreadPoolExecutor代码解析

写在开头:此文基于hotspot1.7.0(build 1.7.0-b147),1.6及以前的版本与1.7的版本实现上差别很大。线程池的逻辑非常复杂,原因在于线程池是有状态的(不是狭隘的指RUNNING,SHUTDOWN这些状态,而是一个类的状态,可以理解成对象的共享字段),而为了保证可伸缩性与效率,很多地方在访问这些状态的时候都没有使用锁来保证互斥访问,而采用的是多次检测。这意味着会有很多...

2013-01-09 16:47:40 84

ScheduledThreadPoolExecutor实现原理

自jdk1.5开始,Java开始提供ScheduledThreadPoolExecutor类来支持周期性任务的调度,在这之前,这些工作需要依靠Timer/TimerTask或者其它第三方工具来完成。但Timer有着不少缺陷,如Timer是单线程模式,调度多个周期性任务时,如果某个任务耗时较久就会影响其它任务的调度;如果某个任务出现异常而没有被catch则可能导致唯一的线程死掉而所有任务都不会...

2013-01-09 16:43:22 225

android 计算器

最近几周玩了下android,一如既往,先拿个计算器练手,支持android2.1 中间也碰到一些难点,比如EditText的输入问题啊,运算符后面不能再跟运算符等等,还好都找到解决方案了 后续将碰到的对我个人来说是难点以及解决方案的内容写一写,先贴些图,放个源码 图形展示   ...

2012-05-13 18:52:31 180

原创 【备忘】指定eclipse启动时需要的jdk

机器上装了多个jdk,有时候ant要用jdk1.5,开发android的jdk又需要1.6,在PATH中配置通用的jre必然影响另外一个 于是找了下,将android开发的eclipse的jdk单独配置为1.6 只需右键eclipse快捷方式,在eclipse.exe添加以下红色字体内容即可(后面的路径根据自己jdk安装目录而定): eclipse.exe -vm D:\p...

2012-04-15 19:52:53 80

深入了解Thread#yield

Thread#yield方法表示“暂停当前正在执行的线程对象,并执行其他线程”。在《The Java Language Specification, ThirdEdition》的17.9 Sleep and Yield 一节中是这样描述的: Thread.sleep causes the currently executing thread to sleep (tempora...

2012-04-06 21:37:27 116

开发、测试java程序时,尽可能使用-server(win上)选项,其他平台使用类似选项,启用JIT优化...

如下粗心的代码  public class Visibility { private static boolean stop; public static void main(String[] args) throws Exception { new Thread(new Runnable(){ public void run() { int i...

2012-02-22 18:36:55 112

java bridge method

java编译器采用bridge方法来兼容本该使用泛型的地方使用了非泛型的用法的问题。 如下代码: public class TestBridgeMethod { public static void main(String[] args) { P p = new S(); p.test(new Object()); }}class P<T...

2011-08-25 16:20:13 106

jdk1.7 String switch的实现

 对于int的switch,jvm是用tableswitch和lookupswitch来实现的,jdk1.7 switch增加了对string的支持,那么底层是如何实现的呢?是否增加了新的指令或是否给某些指令增加了新的含义?  看这样一个程序: public class Test { public static void main(String[]...

2011-08-18 23:14:48 117

HashMap中的元素玩起了躲猫猫

当你明明put进了一对非null key-value进了HashMap,某个时候你再用这个key去取的时候却发现value为null,再次取的时候却又没问题,都知道是HashMap的非线程安全特性引起的,分析具体原因如下: public V get(Object key) { if (key == null) return getForNullKey(); int h...

2011-06-15 17:04:23 69

双重检查锁定失败可能性——参照《The "Double-Checked Locking is Broken" Declaration》...

 双重检查锁定在延迟初始化的单例模式中见得比较多(单例模式实现方式很多,这里为说明双重检查锁定问题,只选取这一种方式),先来看一个版本: public class Singleton {    private static Singleton instance = null;    private Singleton(){}        public s...

2011-04-19 17:58:37 111

原创 去除bat启动swing应用时甩不掉的小黑框(控制台cmd)

如以下程序 import javax.swing.*;public class Test extends JFrame { public Test() { setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(600, 600); setLocationByPlatform(true); setVisible(...

2011-04-18 21:43:31 423 2

原创 如何通过序列化将输入流写入文件或通过socket传输

众所周知,java.io.InputStream是不可序列化的,但是如何序列化一个带有InputStream的类呢?可以通过将流转换成字节数组来实现,这里利用序列化的机制来实现。 在java.io.Serializable这个标记接口的API中有这样的描述:   在序列化和反序列化过程中需要特殊处理的类必须使用下列准确签名来实现特殊方法: private void wr...

2011-04-18 21:30:14 307

rhino(javascript)generated bytecode for method exceeds 64K

众所周知,jdk1.6中添加了对动态脚本的支持,可以在java中执行js脚本,如果要在jdk1.4,1.5下使用这个功能,可以使用http://www.mozilla.org/rhino/上提供的jar,jdk1.6将这个开源项目集成进了jdk(jsr_223)。 在浏览器中,js是解释执行的,在java中,javascript脚本自然没有了window,document等对象,但...

2010-12-28 20:17:15 590

苹果系统声音

苹果系统声音苹果系统声音苹果系统声音苹果系统声音苹果系统声音苹果系统声音苹果系统声音苹果系统声音苹果系统声音苹果系统声音

2007-09-10

硬盘低级格式化

硬盘低级格式化 <br>电子书

2007-09-10

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除