分类:
2009-03-13 11:06:50
1、java的线程分守护线程和非守护线程
MyThread myThread = new MyThread();
myThread.setDaemon();//在线程开始运行之前可以将之设置为守护线程
守护线程就是为了提供服务,当没有可服务的线程时,守护线程就自动结束了,如垃圾回收线程
而非守护线程则没有该特性。
2、synchronized关键字参数往往是对象,它获得的是对象锁。若某进程获得了某个对象锁后,其他进程只能访问该对象的非synchronized部分
3、线程的几种状态:
new、runnable、blocked、waiting、timed waiting、terminated
其中blocked是因为得不到锁,此时线程会挂接在锁队列上。而waiting是因为不满足某条件,这时thread会在该condition的wait set中等待signalAll()的出现。timed waiting则是wait时间的情况,等时间到了,自动苏醒。
4、每个Object都用一个隐含的Lock,类似于java.util.cocurrent.locks.lock。该Lock还有一个Condition,类似于java.util.cocurrent.locks.condition。这个隐含的lock是为synchronized关键字提供服务的。故wait()相当于condition中的await(),notifyAll()相当于condition中的signalAll()。
总之,synchronized机制是lock\condition机制的简易实现版
5、stop和suspend被启用了。因为容易引起数据的不一致性和死锁问题