- 浏览: 319131 次
- 性别:
- 来自: 西安
最新评论
-
yjq8116:
getString 这个方法你有没有试过,是错误的。这段代码被 ...
ByteBuffer和String的互相转换 -
OnlyForJava:
博主,友情的提醒下,你的Ubuntu写错了
Ubutun上配置hadoop,hbase,zookeeper环境并安装
文章列表
Collection.addAll的用法
- 博客分类:
- Java泛型
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 ...
Arrays.asList的注意事项
- 博客分类:
- Java泛型
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 ...
Collection一些容器的特性
- 博客分类:
- Java泛型
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");
...
Set对于每个值只保存一个对象
- 博客分类:
- Java泛型
看看代码就知道了:
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>( ...
(转)Collection之间的转化
- 博客分类:
- Java泛型
转自: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并发编程的执行器Executor
- 博客分类:
- 并发编程
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 ...
一种Handle结构
- 博客分类:
- Effective Java
最近看到了这样一篇博客,感觉写的很好。尤其是它其中叙述的这种基于事件的模型。
博客地址: http://www.ibm.com/developerworks/cn/java/l-niosvr/#icomments
我也是照猫画虎的写了个示例程序,不知道对不对我斗胆描述一下这个结构:
1.定义一个接口,定义需要提供的服务。
2.定义一个抽象类(或者普通的类)实现上述接口,实现接口的所有服务,实现内容都为空的。
3.接下来,用户可以根据自己的需要通过继承以上的类来重写接口的服务,实现自己想要的服务。想写多少写多少,想写几个写几个 ...
采用NIO实现一个Socket服务器
- 博客分类:
- Java的NIO
以前用Socket写服务端,常用的做法是维护一个线程池,每当有客户端连入则交给一个特定的线程处理,处理完之后返回。解除了NIO之后,发现可以不用这样了。使用NIO的话,不需要像以前那样维护线程池了,一个线程就可以搞定多个客户端的请求。
于是自己就动手写了一个示例程序。
先描述一下程序:服务端采用ServerSocketChannel,使用Selector注册感兴趣的事件。
测试程序开启连个客户端,与服务器连接并传输内容。服务器接收到消息后,打印出来。 通过结果可以看出NIO的强大。 ...