1.sleep方法不会释放持有的锁
2.synchronized锁机制。同步代码块,对同意对象申请锁
Thread thread1=new Thread(new Runnable() {
@Override
public void run() {
synchronized (list){
for (int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
});
Thread thread2=new Thread(new Runnable() {
@Override
public void run() {
synchronized (list){
list.clear();
}
}
});
thread1.start();
thread2.start();
synchronized方法,作用跟synchronized代码块一样,多个线程在调用不同的synchronized方法时
public synchronized void bianli(){}
静态synchronized方法获得的是当前类的.class对象的锁
对象的wait(),notify()方法,wait会释放锁,其它现成执行,notify会通知等待的线程继续执行。通知所有等待的线程使用notifyAll.当notify的线程执行完,再执行wait的线程,容易造成死锁,wait的线程 没有被唤醒
多线程笔记
最新推荐文章于 2022-11-10 11:04:17 发布