面试之线程篇
线程:共享进程中的资源
实现方式:
1,继承父类Thread 重写run方法
2,实现接口Runnable 实现run方法
启动进程:调用start()方法 而不是run
线程同步:多个线程并发访问同一数据时,容易发生数据状态不稳定
每个类一把锁,每个对象一把锁
只有获取锁的线程才可以进入同步区域
同步方法:获取的锁是当前对象的锁,粒度只能是方法
1 public void synchronized function() { 2 // 具体代码 3 }
同步块:获取的锁是任意对象的锁,粒度更小
1 synchronized(this) { 2 // 具体代码 3 }
sychronized
线程间的通讯
wait:使当前线程进入指定对象的等待池
notify:从指定对象等待池中唤醒一个等待线程
notifyAll:从指定对象等待池中唤醒全部等待线程
只有获得该对象的锁后才可以调用上述方法
B线程和A线程通讯 A线程在指定对象的等待池中等待, B线程在指定对象等待池中唤醒A线程