线程基础知识总结

资源贴:
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的区别详见资源贴

猜你喜欢

转载自blog.csdn.net/wrongyao/article/details/81462747