日期:2014-05-20  浏览次数:20699 次

单线程的synchronized方法或者变量
如题。单线程的synchronized方法或者变量,代码段有什么特殊的用途

我知道多线程的synchronized用法,但是不知道单线程使用synchronized有什么用。

多谢各位大侠的回答。

------解决方案--------------------
单线程就别加synchronized了,加了这个的话每次都会进行加锁,影响程序的性能,比如Java类库中的Vector和Stack,因为在单线程使用环境下也使用synchronized,所以相当影响程序性能,后来就改了类库,有了专门用于多线程环境的容器和单线程环境的容器,还有StringBuffer,因为以前没有StringBuilder,导致StringBuffer过度使用,程序慢的要死,不过自从有了StringBuilder(去除了所有的synchronized同步代码),我们就可以在单线程环境下使用StringBuilder啦。

不过话说现在有些JVM很智能,能检测到程序是否工作在多线程下,假如是单线程,会优化掉synchronized代码。
还有synchronized少用点,尽量用用JavaSE5中的同步工具,既简单并发性又好还不容易出错。

O了,打了这么多