`
文章列表
Collection<Integer> collection=new ArrayList<Integer>(Arrays.asList(1,2,3,4,5)); Iterator<Integer> iterator=collection.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } System.out.println("***************************************** ...
虽然在java.util包中有Stack,但是不赞成使用。建议使用如下的Stack  !!!     先看看是如何实现的: package com.wjy.linkedlist.stack; import java.util.LinkedList; public class Stack<T> { private LinkedList<T> storage=new LinkedList<T>(); pu ...
List<Integer> list=Arrays.asList(0,1,2,3,4,5); list.set(0, (Integer)1); //! list.add(6); //Runtime error.Arrays.asList产生的List在底层的表示是数组,因此不能改变尺寸。所以试图调用add或delete方法的时候,会出现“Unsupported Operation”错误。 iterator=list.iterator(); while (iterator.hasNext()) { System.ou ...
1.List是按照插入的顺序保存元素的,就是说先插入的元素排在靠前的位置。 看个例子: List<String> list=new ArrayList<String>(); list.add("zombie"); list.add("Angler"); list.add("hello"); list.add("world"); list.add("God"); list.add("hello"); ...
看看代码就知道了: package com.wjy.collection; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; public class SetTest { public static void main(String args[]){ List<String> list=new ArrayList<String>( ...
转自:http://zhouhaitao.iteye.com/blog/669318 ★数组转Collection 使用Apache Jakarta Commons Collections: import org.apache.commons.collections.CollectionUtils;       String[] strArray = {"aaa", "bbb", "ccc"};   
1,创建一个只读的Collection或Map,有时可以带来很大的方便。创建的方式就是使用Collections.unmodifiableSortedSet 例如:              List<String> a=Collections.unmodifiableList(                                          new ArrayList<String>(data));              ListIterator<String> lit=a.listIterator();         ...
       先简要对ThreadLocal进行一下说明,大家都知道synchronized,他是为了解决线程互斥访问临界资源的。而ThreadLocal是为了隔离临界资源(可能这里不应该叫临界资源了,应该叫被共享的资源),创建副本解决synchronized要解决的那个问题的。        看个例子先: package com.wjy.threadlocal; public class Student { private int age=0; public int getAge(){ return this.age; } public void setA ...
      synchronized块必须给定一个在其上进行同步的对象,最合理的方式是:使用其方法正在被调用的当前方法:synchronized(this)。       但是有的时候必须在另一个对象上同步。       我们看两个代码的例子:                                                                                  1. package com.wjy.test; public class Dualsynch{ private Object myObject=new Object() ...

共享资源

    共享资源一般是以对象形式存在的内存片段,但也可以是文件,输入/输出端口,或者是打印机。要控制对共享资源的访问,得先把它包装进一个对象。然后把所有要访问这个资源的方法标记为synchronized。如果某个任务处于一个队标记问synchronized的方法的调用中,那么在这个线程从该方法返回之前,其他所有要调用类中任何标记为synchronized方法的线程都会被阻塞。      对于某个特定对象来说,其所有synchronized方法共享同一个锁。在使用并发时,将域设置成private是非常重要的,否则,synchronized关键字就不能防止其他任务直接访问域。      每当这 ...
  package com.wjy.test; import java.io.IOException; public class ResponsiveUI extends Thread{ private static volatile double d=1; public ResponsiveUI(){ setDaemon(true); start(); } public void run(){ while(true){ d=d+(Math.PI+Math.E)/d; } } public static void ma ...
1,实现Callabale<V>接口而不是Runnable接口。 2, 在call方法中返回需要的信息。 3.使用ExecutorService.submit调用,返回值是Future<V>。 4.通过get获得结果,也可以使用isDone进行检测;否则get可能阻塞直到有结果准备就绪。 看个例子: package com.wjy.multithread; import java.util.concurrent.Callable; public class MyCallable implements Callable<String>{ ...
       Java SE5中java.util.concurrent包中的执行器将管理Thread.简要介绍一下: 1.CachedThreadPool:这是首选的,因为他会根据需要创建合理数量的线程: ExecutorService exec=Executors.newCachedThreadPool(); for(int i=0;i<10;i++){ exec.execute(new MyRunnable()); } exec.shutdown(); System.out.println("main finished;&quo ...
     最近看到了这样一篇博客,感觉写的很好。尤其是它其中叙述的这种基于事件的模型。      博客地址: http://www.ibm.com/developerworks/cn/java/l-niosvr/#icomments      我也是照猫画虎的写了个示例程序,不知道对不对我斗胆描述一下这个结构:      1.定义一个接口,定义需要提供的服务。      2.定义一个抽象类(或者普通的类)实现上述接口,实现接口的所有服务,实现内容都为空的。      3.接下来,用户可以根据自己的需要通过继承以上的类来重写接口的服务,实现自己想要的服务。想写多少写多少,想写几个写几个 ...
      以前用Socket写服务端,常用的做法是维护一个线程池,每当有客户端连入则交给一个特定的线程处理,处理完之后返回。解除了NIO之后,发现可以不用这样了。使用NIO的话,不需要像以前那样维护线程池了,一个线程就可以搞定多个客户端的请求。       于是自己就动手写了一个示例程序。       先描述一下程序:服务端采用ServerSocketChannel,使用Selector注册感兴趣的事件。                                   测试程序开启连个客户端,与服务器连接并传输内容。服务器接收到消息后,打印出来。  通过结果可以看出NIO的强大。 ...
Global site tag (gtag.js) - Google Analytics