随笔分类 -  j2se

摘要:实现Callable接口的类其实就是一个任务,可以异步执行并返回结果。通过ExecutorService.submit 方法提交一个callable任务,并且通过Future对象来获得结果。Future对象可以取消运行任务,设置等待时间,获取任务状态,最终获得任务结果。 1 public static void main(String[] args) { 2 ExecutorService exec = Executors.newCachedThreadPool(); 3 4 Future<String> future = exec.submi... 阅读全文
posted @ 2012-03-22 17:32 lostyue 阅读(689) 评论(0) 推荐(0)
摘要:newCachedThreadPool 创建一个线程池创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能。调用 execute 将重用以前构造的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并从缓存中移除那些已有 60 秒钟未被使用的线程。因此,长时间保持空闲的线程池不会使用任何资源。 1 public class LiftOff implements Runnable { 2 protected int countDown = 10; // Default 3 ... 阅读全文
posted @ 2012-03-22 16:26 lostyue 阅读(348) 评论(0) 推荐(0)
摘要:jdk api中的描述:NEW至今尚未启动的线程处于这种状态。RUNNABLE正在 Java 虚拟机中执行的线程处于这种状态。可运行线程的线程状态。处于可运行状态的某一线程正在 Java 虚拟机中运行,但它可能正在等待操作系统中的其他资源,比如处理器。BLOCKED受阻塞并等待某个监视器锁的线程处于这种状态。受阻塞并且正在等待监视器锁的某一线程的线程状态。处于受阻塞状态的某一线程正在等待监视器锁,以便进入一个同步的块/方法,或者在调用 Object.wait 之后再次进入同步的块/方法。WAITING无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。某一等待线程的线程状态。某一线程因 阅读全文
posted @ 2012-03-21 23:09 lostyue 阅读(883) 评论(0) 推荐(0)
摘要:设置一个读计数器,每次读取配置信息前,将计数器加1,读完后将计数器减1。只有在读计数器为0时,才能更新数据,同时要阻塞所有读属性的调用。 1 public class GlobalConfig { 2 private static GlobalConfig instance; 3 private Vector properties = null; 4 private boolean isUpdating = false; 5 private int readCount = 0; 6 private GlobalConfig() { 7 /... 阅读全文
posted @ 2012-03-21 22:37 lostyue 阅读(2047) 评论(0) 推荐(0)
摘要:java多线程单例模式:1 public static Singleton getInstance(){ 2 if (instance == null) 3 synchronized(instance){ 4 if(instance == null) 5 instance = new Singleton(); 6 } 7 return instance; 8 }另一个改进: 1 public class Singleto... 阅读全文
posted @ 2012-03-21 22:30 lostyue 阅读(3406) 评论(0) 推荐(0)
摘要:1 package rainbow.thread; 2 3 public class PrintABC { 4 5 private int counta = 0, countb = 0, countc = 0; 6 7 private boolean printa = false, printb = false, printc = false; 8 9 private int printcount = 0;10 11 public void printa(){12 synchronized(this){1... 阅读全文
posted @ 2012-03-21 20:44 lostyue 阅读(704) 评论(0) 推荐(0)
摘要:1。这异常就是因为一个线程压根就没拥有这个对象,却试图去等待他的监控器。比如你有很多线程都来访问一段代码块,代码块中有个xxx.wait(),一次只可能有一个线程拥有对象的监视器,你如何才能拿到这个监视器呢?通过执行此对象的同步实例方法。通过执行在此对象上进行同步的 synchronized语句的正文。对于 Class 类型的对象,可以通过执行该类的同步静态方法。如果你没有用synchronized(xxx)来包含这块代码,那么很多的线程都可以来跑这个xxx.wait(),此时就会出现问题。解决方法synchronized(object){ object.wait();} 必须先拿到这个对象2 阅读全文
posted @ 2012-03-21 17:12 lostyue 阅读(558) 评论(0) 推荐(0)
摘要:Java 2将容器分为两个不同的概念: Collection 与Map Collection: 提供对一组各自独立的元素的集合,List 与 Set接口都继承自Collection接口。 Map:提供了一组key-value(键值对)。 两种类型的主要区别在于: Collection类型每个位置只持有一个元素(Object),比如List以加入到容器中的先后顺序来持有一个独立的的对象。Set中的对象不得重复,并且它会使用自己内部的一种排序机制。Map类型所持有的是key-value(键值对),Map不接受重复的keyList List定义了一个线性表接口,Java2中的List实现方式分为两种 阅读全文
posted @ 2012-03-07 17:50 lostyue 阅读(504) 评论(0) 推荐(0)
摘要:1、 继承和实现区别 Hashtable是基于陈旧的Dictionary类,完成了Map接口;HashMap是Java 1.2引进的Map接口的一个实现(HashMap继承于AbstractMap,AbstractMap完成了Map接口)。 2、 线程安全不同 HashTable的方法是同步的,HashMap是未同步,所以在多线程场合要手动同步HashMap。 3、 对null的处理不同 HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。即HashTable不允许null值其实在编译期不会有任何的不一样,会照样... 阅读全文
posted @ 2012-03-07 17:10 lostyue 阅读(314) 评论(0) 推荐(0)
摘要:1 public V put(K key, V value) { 2 if (key == null) 3 return putForNullKey(value);//处理Null值 4 int hash = hash(key.hashCode());//获得Hashcode再处理 5 int i = indexFor(hash, table.length);//获得该值在数组中的位置 6 for (Entry<K,V> e = table[i]; e != null; e = e.next) {... 阅读全文
posted @ 2012-03-07 16:22 lostyue 阅读(471) 评论(0) 推荐(0)
摘要:jvm体系结构类装载器 --- > (运行时数据区:方法区,堆,java栈,pc寄存器,本地方法栈) --- > 执行引擎 --- > 本地方法接口 < --- 本地方法库装载--- |-- 如何装载一个类,如何解析|-- 启动类装载器, 用户自定义装载器|-- 每个类装载器都有自己的命名空间,维护着由他装载的类型|-- 关于类装载的详细细节,后面介绍.tbt方法区,堆,栈,寄存器,本地方法栈方法区---|-- 方法区中的数据必须是线程安全的。|-- 方法区中需要使用合理的数据结构以保证以保证虚拟机查找其中的类型信息。|-- 方法区可以被垃圾收集。|-- 方法区的大小不 阅读全文
posted @ 2012-02-27 20:51 lostyue 阅读(281) 评论(0) 推荐(0)
摘要:Java中的堆空间是什么?当Java程序开始运行时,JVM会从操作系统获取一些内存。JVM使用这些内存,这些内存的一部分就是堆内存。堆内存通常在存储地址的底层,向上排列。当一个对象通过new关键字或通过其他方式创建后,对象从堆中获得内存。当对象不再使用了,被当做垃圾回收掉后,这些内存又重新回到堆内存中。要学习垃圾回收,请阅读”Java中垃圾回收的工作原理”。如何增加Java堆空间在大多数32位机、Sun的JVM上,Java的堆空间默认的大小为128MB,但也有例外,例如在32未Solaris操作系统(SPARC平台版本)上,默认的最大堆空间和起始堆空间大小为 -Xms=3670K 和 -Xmx 阅读全文
posted @ 2012-02-27 18:01 lostyue 阅读(605) 评论(0) 推荐(0)
摘要:<script type="text/javascript"> function test(){ var str = '{ "name": "Violet", "occupation": "character" }'; var obj = eval('(' + str + ')'); alert(obj.toJSONString()); } function newForm(){ var newform = document.creat 阅读全文
posted @ 2011-08-02 14:38 lostyue 阅读(296) 评论(0) 推荐(0)
摘要:自己的实现1package rainbow.test;import rainbow.test.foods;public class ThreadTest1 { public static void main(String[] args) { foods foo = new foods(); new pro(foo).start(); new cons(foo).start(); }}class pro extends Thread{ foods foo = null; public pro(foods foo){ this.foo = foo; } @Override public void 阅读全文
posted @ 2011-07-13 13:03 lostyue 阅读(265) 评论(0) 推荐(0)
摘要:eclipse中编译出现该问题检查自己的类名...我的问题是使用了 类名: concon是操作系统保留的一个设备名字,不可以使用该类名..其他的比如CON, PRN, AUX, CLOCK$, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9都不可以. 阅读全文
posted @ 2011-07-13 12:48 lostyue 阅读(3578) 评论(0) 推荐(0)
摘要:public static String getMacOnWindow() { try { String mac = null; Process process = Runtime.getRuntime().exec("ipconfig /all"); BufferedReader buffer = new BufferedReader(new InputStreamReader(process.getInputStream())); for (String line = buffer.readLine(); line != null; line = buffer.read 阅读全文
posted @ 2011-07-13 10:02 lostyue 阅读(855) 评论(0) 推荐(0)
摘要:不要试图去加timeouts. 首先确定没啥异常之类的. 检查下 eclipse中Jboss server的配置,比如<?xml version="1.0" encoding="UTF-8" standalone="no"?><server hostname="localhost" id="JBoss v4.0 at localhost" name="JBoss v4.0 at localhost" runtime-id="JBoss v4.0&q 阅读全文
posted @ 2011-07-08 18:50 lostyue 阅读(2217) 评论(0) 推荐(0)
摘要:<script language="javascript" type="text/javascript"> function newForm(xxx, xxxxx){ var emsform = document.createElement("FORM"); document.body.appendChild(emsform); emsform.method = "post"; createNewFormElement(emsform, "user", xxx); createNew 阅读全文
posted @ 2011-06-27 22:04 lostyue 阅读(1221) 评论(0) 推荐(0)
摘要:第一种:File f = new File(this.getClass().getResource("/").getPath());System.out.println(f);结果:C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin获取当前类的所在工程路径;如果不加“/”File f = new File(this.getClass().getResource("").getPath());System.out.println(f);结果:C:\Documents%2 阅读全文
posted @ 2011-06-27 21:54 lostyue 阅读(102598) 评论(3) 推荐(2)