共享资源
什么是共享资源?共享资源指的是多个线程同时对同一份资源进行访问(读写操作),被多个线程访问的资源就称为共享资源,如何保证多个线程访问到的数据是一致的,则被称为数据同步或者资源同步。
synchronized关键字提供了一种锁的机制,能够确保共享变量的互斥访问,从而防止数据不一致问题的出现。
synchronized可以用于对代码块或方法进行修饰,而不能够用于对class以及变量进行修饰。
死锁产生的原因
交叉锁可导致程序出现死锁
内存不足
一对一的数据交换
数据库的锁
文件的锁
死循环引起的锁
wait和sleep的区别:
·wait和sleep方法都可以使线程进入阻塞状态。
·wait和sleep方法均是可中断方法,被中断后都会收到中断异常。
·wait是Object的方法,而sleep是Thread特有的方法。
·wait方法的执行必须在同步方法中进行,而sleep则不需要。
·线程在同步方法中执行sleep方法时,并不会释放monitor的锁,而wait方法则会释放monitor的锁。
·sleep方法短暂休眠之后会主动退出阻塞,而wait方法(没有指定wait时间)则需要被其他线程中断后才能退出阻塞。
网友评论