Java中的几个小问题

1.关于“==”和“equals”,其中对引用型变量和简单类型是不同的
    (1) "==" 对简单类型来说,是比较值是否相等; 对于引用来说,是看二者是否指向同一个地址。
    (2) equals 不管对于什么类型都是比较值是否相等。

还要注意的是:当引用型变量没有通过关键字new 来申请变量时,它可能不会在堆里生成一个新的变量,而是到栈中找一个是否相等的值,然后把这个引用指向它,比如:在栈中有“asdfg”这个一个字符串,然后我们String str1 = "asdfg" ;这样的话,str1并没有在堆中生成新的字符串,而是将引用指向了栈中的“asdfg”。


2.关于“synchronized”的使用 ,线程同步问题,并发问题,线程安全。

 线程安全:指的是在多线程并发执行的程序中,怎么保证各自的线程是安全的,比如说:多个请求线程要请求某个公共资源(可以使一个对象,一个程序,一个方法,一段代码段),怎么来保证各自的请求线程中没有冲突,对请求服务的某些临界资源没有冲突。通过某种形式的互斥而实现对并发访问的保护,则代码是线程安全的。
http://en.wikipedia.org/wiki/Thread-safe  
http://pialion.blogchina.com/2531546.html开发线程安全的Spring Web应用
而synchronized关键字往往是Java应用中实现线程安全最重要的因素。

对于synchronized,它的使用可以对代码,也可以针对某个方法。
(1).对于方法,它只对某个对象来说是线程安全的,就是说
   Object o = new  **Object();对于所有操作o对象的线程是安全,并不能保证  o2,o3等等对象也是线程安全的
(2).对于代码来说,在synchronized内的代码,对于所有的线程都是安全的。
   比如:
public class  SynClass[


static Object o = new **Objcet();

.

synchronized(o)// 对象o实现并发锁,进行同步

.

}
}
在sychronized内的代码,对有SynClass 的所有对象都是线程同步的,换句话说就是,此处代码对所有的线程来说,在某一时刻只有一个线程拥有这个对象锁o,只有等这个线程执行完了以后,才释放对象锁o,这样其他的线程才能去争取这个锁O来获得代码的执行权。








posted on 2006-10-11 10:06 圆月弯刀 阅读(1273) 评论(1)  编辑  收藏

评论

# re: Java中的几个小问题 2006-10-13 14:02 1

如果你是编程高手,这里将是你一个展现自我的新舞台----www.mylinux.com.cn
  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2006年10月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿(1)

随笔档案

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜