解决方案 »
- 请问:如何把可执行Jar文件转换成Windows控制台可执行程序?
- 在对ArreyList递归遍历时执行Iterator.remove()抛出了ConcurrentModificationException??
- java == 的问题,看上去简单
- 可以用JNI调用Deiphi编写的Dll吗?那又用什么技术呢?给个提示,
- [Java面试题][多线程][阻塞队列]ArrayBlockingQueue
- java连接MySQL的基本问题
- JAVA开发中的B/S方式,C/S方式到底是什么?
- 在线急救,关于jbulider的运行结果快速关闭问题?
- 讨论java程序员的最佳工作地点。。。。。
- 这是什么问题
- .jsp的登陆界面中用session保存信息的问题
- Console是干什么用的?为什么我的小代码出错了。。
□ □
■ 忍以明志 勤以致远 ■
□ □
■□■□■□■□■□■□■□■
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
看到有人这么回答,看来真是尽信书不如无书啊,何况是baidu呢线程同步有几种方法??
http://zhidao.baidu.com/question/15390715.html?fr=ala0
sleep
yield
join同步用synchronized
还有volatile关键字在Java1.2之后,又有ThreadLocal用于隔离不同线程,属于不同类型的同步吧。现在Java7之后,又有fork in机制。
多个线程竞争的其实是锁。你可以用某个对象的隐式锁(称L)把某段代码“锁住”。一个线程首先进入这段代码后,这个线程就独占这个锁L,其他线程只有等这个线程执行完这段被锁代码,释放锁L后才能再去竞争锁L,从而进入这段代码。至于notify是跟对象的隐式条件有关,你可以去看一下《java核心技术》的线程那一章,它将的蛮清楚的。在java5里好像还出现了单独的锁对象和条件对象。顺便提一下,我看的是java5的黄底红字第7版。
1.任何对象都可以做锁。
2.对于有用synchronized的地方,分析清楚他用的是什么作为锁。
如静态方法 前加 synchronized, 锁是什么? 是该类对应的class对象。
非静态方法呢? 是当前对象。
synchronized 代码块呢? 是你指定的那个对象。
把这两点搞清楚了,这个锁的问题就豁然开朗了。
不要说锁是什么级别的,你的意思准确说是这样:
锁可以是object级别的 ---》非静态方法呢? 是当前对象。
class级别的---》 如静态方法 前加 synchronized, 锁是什么? 是该类对应的class对象。
锁无级别,就是看你用谁做锁。