Java SE specials

 

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

 

 

 

 

 

你可能感兴趣的:(java,thread,C++,c,C#)