线程与同步方法:
1)一个线程在访问一个对象的同步(synchronized)方法时,其他线程可以同时访问这个对象的非同步方法;
2)一个线程在访问一个对象的同步方法时,其他线程不能同时访问此同步方法
3)一个线程在访问一个对象的同步方法时,其他线程不能同时访问这个对象的另一个同步方法
同步方法A中使用了该对象的wait方法,当前线程(假设称为线程th)放弃对象锁,进入阻塞队列,其他线程可以访问该对象的同步方法,
直到使用了该对象的notify或notifyAll 线程th才被唤醒,进入就绪队列,从而具备运行条件。
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify
线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。
Java中的线程有四种状态分别是:就绪 --> 运行 --> 挂起 - - - > 结束。
synchronized与java.util.concurrent.locks.Lock的区别:
1)相同点:Lock能完成synchroinzed实现的所有功能
2)不同点:Lock有比synchronized更精确的线程语义和更好的性能;synchronized会自动释放锁,而Lock要求必须在finally块中手动释放锁。