多线程笔记

梦想的初衷 提交于 2020-01-10 03:57:59

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的线程 没有被唤醒

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!