资源贴:
wait和notify与notifyAll的用法:https://blog.csdn.net/jianiuqi/article/details/53448849
synchronized中的static方法和普通方法:https://blog.csdn.net/virgoboy2004/article/details/7585182
线程池的用法:http://cuisuqiang.iteye.com/blog/2019372
信号量机制:http://www.importnew.com/21889.html
线程中经常被用到的知识
1)线程的创建与启动 2)线程常用方法 3)线程同步
1、线程的创建
线程的创建方式有两种继承Thread类,重写run方法;继承Runnable接口实现run方法
1.1线程启动
Thread.start()
2、常用方法
sleep():线程休眠
yield():让出cpu重新竞争
isAlive():线程是否出于活跃状态
interrupt():线程中断
isInterrupt():线程是否中断,通常与上述方法连用。
join():主线程创建a线程,a.join()表示a线程合并到主线程,也即主线程要等待a线程执行完毕才向下继续执行。
线程池中等待全部线程执行完毕再向下执行时,需要用到信号量机制,详见资源贴。
3、线程同步synchronized关键字,wait与notify,ReentrantLock(https://www.cnblogs.com/baizhanshi/p/6419268.html)
3.1 锁住代码块
synchronized (new byte[0]) {
}
3.2 锁住普通方法 (当前调用对象(this)是对象锁(),每个实例不同)
public synchronized String test() {
// 同步代码
return null;
}
3.3 锁住静态方法(jvm中的Class对象是锁)
public synchronized static String test2() {
// 同步代码
return null;
}
3.2和3.3的区别详见资源贴