java的相关原理理解

http://tech.ddvip.com   2008年06月12日    社区交流

本文详细介绍java的相关原理理解

  当A的一个对象a被第一个线程调用其f()方法的时候,第二个线程不能调用a的synchronized方法例如f(),因为那是在试图在对象上加第二把锁。但调用g()却是可以的,因为并没有在同一对象上加两把锁的行为产生。     这样大家能理解了麽?明白它的原理能更好的帮助大家设计同步机制,不要滥用加锁。

  PS:下篇笔者计划开始对J2ee接触到的各个方面来进行总结,谈谈自己的经验和想法。希望大家还能一如既往的支持笔者写下去,指正不足之处。

  ############################################################################################################# Java杂谈(四)

  不知不觉已经写到第四篇了,论坛里面不断的有朋友鼓励我写下去。坚持自己的作风,把一切迷惑不容易理清楚的知识讲出来,讲到大家都能听懂,那么自己就真的懂了。最近在公司实习的时候Trainer跟我讲了很多经典事迹,对还未毕业的我来说是笔不小的财富,我自己的信念是:人在逆境中成长的速度要远远快过顺境中,这样来看一切都能欣然接受了。     好了,闲话不说了,第三篇讲的是反射机制集合框架之类的,这次打算讲讲自己对反序列化和多线程的理解。希望能对大家学习Java起到帮助??         1.关于序列化和反序列化     应该大家都大概知道Java中序列化和反序列化的意思,序列化就是把一个Java对象转换成二进制进行磁盘上传输或者网络流的传输,反序列化的意思就是把这个接受到的二进制流重新组装成原来的对象逆过程。它们在Java中分别是通过ObjectInputStream和  ObjectInputStream这两个类来实现的(以下分别用ois和oos来简称)。         oos的writeObject()方法用来执行序列化的过程,ois的readObject()用来执行反序列化的过程,在传输二进制流之前,需要讲这两个高层流对象连接到同一个Channel上,这个Channel可以是磁盘文件,也可以是socket底层流。所以无论用哪种方式,底层流对象都是以构造函数参数的形式传递进oos和ois这两个高层流,连接完毕了才可以进行二进制数据传输的。例子:     可以是文件流通道     file  =  new  File(“C:/data.dat”);     oos  =  new  ObjectOutputStream(new  FileOutputStream(file));     ois  =  new  ObjectInputStream(new  FileInputStream(file));         或者网络流通道     oos  =  new  ObjectOutputStream(socket.getOutputStream());     ois  =  new  ObjectInputStream(socket.getInputStream());

责编:豆豆技术应用

正在加载评论...