1.在jdk1.5之前,Object.wait函数没有timeout返回标识,
e.g:
long t=System.currentTimeMillis();
obj.wait(timeout);
if(System.currentTimeMillis()-t>=timeout)
......
如此标识timeout是 粗略的.
现在的java util concurrent下的 Condition.await函数是可以标识timeout的,
e.g:
if(!cond.await(timeout, TimeUnit.MILLISECONDS))
......;//timeout.
if(cond.awaitNanos(nanosTimeout)<=0) //timeout.
2.pls see :http://adapterofcoms.iteye.com/blog/615200
在运行时,你能修改[final int target=911]target的值吗?确实比c安全,[const int tag=911]tag的值能改!而且只需2行代码.
3.Thread.currentThread().interrupt();添加interrupt标记,
线程如果调用wait等函数将throw InterruptedException,并清除interrupt标记.
Thread.currentThread().isInterrupted();//不会清除interrupt标记,只是查询.
Thread.interrupted();//如果标记了就清除.
4.try{
return true;
}finally{
return false;
} 你如果能看穿上面代码的本质,你就真的很懂java了.
5.java.lang.Integer.IntegerCache
如何比较Integer,是==,还是equals ??????
6.构造函数的本质,和成员变量(当然是non-static的)的初始化顺序.
构造函数的调用过程为 new instance----->initialize()[<---这个才是编译后的真正的构造函数]----->对构造函数之外的成员变量进行初始化(如果需要).
Java构造时成员初始化的陷阱<--其实没陷阱.
7.nio ByteBuffer ByteOrder.BIG_ENDIAN or LITTLE_ENDIAN ????? socket programming
一般linux[ubuntu]都是 LITTLE_ENDIAN
8.SocketChannel的获得:SocketChannel.open() 而不是Socket.getChannel() return null !!!!!!
9.如果socket是block的,使用SocketChannel在w/r时 都需要while ,if to total_w/r_size break;