摘要: JDK5.0的高级同步Semaphore类(信号量)就是可以向线程分配许可证,指定许可证数量可以实现多线程的同步。Semaphores=newSemaphore(4);//可以分配4个许可证,许可证都被分配出去时,得不到许可证的线程就会阻塞。acquire()方法,获得许可证。release()方法,释放一个许可证,也有相应的方法指定释放和获得许可证的数量的方法。CountDownLatch类CountDownLatch中有个计数器,访问这个类的对象就会从计数器中减一,countDown()方法会将原有的设置的计数器值减一,当countdown计数器为零时会使放所有await()的线程。Cyc 阅读全文
posted @ 2011-05-04 15:39 BuildNewApp 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 以下是调用DoCallStuff的主程序。import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;public class Executor { public static void main(String[] args){ //*1 DoCallStuff call1 = new Do... 阅读全文
posted @ 2011-05-04 15:21 BuildNewApp 阅读(461) 评论(0) 推荐(0) 编辑
摘要: Java5.0的注释(Annotation)描述代码的代码。给编译器看的代码,作用是规范编译器的语法。class Student{ @Override public String toString(){ return “student”; }}类型(接口)1.标记注释@Override2.单值注释@注释名(prameter=10)intparameter特例:@注释名(value“134”)@SuperessWarning({“ddd”,”aaa”,”ccc”})//JVM还没有实现这个注释3.普通注释(多值注释)(key1=value,……)4.自定义注释pu... 阅读全文
posted @ 2011-05-04 15:20 BuildNewApp 阅读(720) 评论(0) 推荐(0) 编辑
摘要: 泛型方法的定义把数组拷贝到集合时,数组的类型一定要和集合的泛型相同。<...>定义泛型,其中的"..."一般用大写字母来代替,也就是泛型的命名,其实,在运行时会根据实际类型替换掉那个泛型。<E> void copyArrayToList(E[] os,List<E> lst){ for(E o:os){ lst.add(o); }}static <E extends Number> void copyArrayToList(E[] os,List<E> lst){ for(E o:os){ lst.add(o); 阅读全文
posted @ 2011-05-04 11:04 BuildNewApp 阅读(341) 评论(0) 推荐(0) 编辑
摘要: java5.0中的泛型很实用的技能,所以单独提出来说下!说明增强了java的类型安全,可以在编译期间对容器内的对象进行类型检查,在运行期不必进行类型的转换。而在javase5.0之前必须在运行期动态进行容器内对象的检查及转换,泛型是编译时概念,运行时没有泛型。减少含糊的容器,可以定义什么类型的数据放入容器List<Integer> aList = new ArrayList<Integer>();aList.add(new Integer(1));// ...Integer myInteger = aList.get(0);支持泛型的集合,只能存放制定的类型,或者是指定 阅读全文
posted @ 2011-05-04 11:04 BuildNewApp 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 可变长的参数使用条件:只在必要的时候进行。同时有参数为数组,就不能使用变长参数,有变长参数,就不能使用数组,不能共存。一个方法最多只能有一个变长参数,而且是最后一个参数。<5.0之前>publicstaticvoidmain(String[]args){}JVM收到数据封装在数组里,然后传入方法<5.0之后>publicstaticvoidm(String...s){ System.out.println("m(String)"+s);}调用m(String…s)for(Strings2:s){ System.out.println(s2);}格式化 阅读全文
posted @ 2011-05-04 10:42 BuildNewApp 阅读(312) 评论(0) 推荐(0) 编辑
摘要: java5.0的新特性自动装箱和自动拆箱自动封箱和自动拆箱,它实现了简单类型和封装类型的相互转化时,实现了自动转化。自动封箱解箱只在必要的时候才进行。还有其它选择就用其它的byteb-128~127Byteb多一个null简单类型和封装类型之间的差别封装类可以等于null,避免数字得0时的二义性。Integeri=null;intii=i;会抛出NullException异常。相当于intii=i.intValue();Integeri=1;相当于Integeri=newInteger(1);在基本数据类型和封装类之间的自动转换<5.0之前>Integeri=newInteger( 阅读全文
posted @ 2011-05-04 10:40 BuildNewApp 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 反射反射,在运行时,动态分析或使用一个类进行工作。类对象,是一个描述这个类信息的对象,对虚拟机加载类的时候,就会创建这个类的类对象并加载该对象。Class,是类对象的类型。只有对象才会被加载到虚拟机中。一个类只会被加载一次。获得类对象的三种方式:(类对象不用new的方法得到的)1)也可以用类名.Class,获得这个类的类对象。2)用一类的对象掉用a.getClass(),得到这个对象的类型的类对象。3)也可以使用Class.forName(类名)(Class类中的静态方法),也可以得到这个类的类对象,(注意,这里写的类名必须是全限定名(全名),是包名加类名,XXX.XXX.XXXX)。强制类加 阅读全文
posted @ 2011-05-04 10:21 BuildNewApp 阅读(614) 评论(0) 推荐(0) 编辑
摘要: 建立TCP客户端创建一个TCP客户端程序的步骤:1).创建Socket2).获得I/O流3).对I/O流进行读写操作4).关闭I/O流5).关闭SocketSocket connection = new Socket(127.0.0.1, 7777); ObjectInputStream input=new ObjectInputStream(connection.getInputStream()); ObjectOutputStream utput=new ObjectOutputStream(connection.getOutputStream()); 处理输入和输出流;关闭流和socke 阅读全文
posted @ 2011-05-04 08:41 BuildNewApp 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 网络基础知识网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。计算机网络形式多样,内容繁杂。网络上的计算机要互相通信,必须遵循一定的协议。目前使用最广泛的网络协议是Internet上所使用的TCP/IP协议。IP地址:计算机在网络中唯一标识,相对于internet,IP为逻辑地址。A类地址A类地址第1字节为网络地址,其它3个字节为主机地址。另外第1个字节的最高位固定为0。A类地址范围:1.0.0.1到126.155.255.254。A类地址中的私有地址和保留地址:10.0.0.0到10.255.255.255是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地 阅读全文
posted @ 2011-05-04 08:40 BuildNewApp 阅读(456) 评论(0) 推荐(0) 编辑