线程的实现方法有两种:
1 实现runnable接口中的run方法
class test implements Runnable{ public void run(){ //实现代码 } }
使用时:
Runnable r = new test(); Thread t = new Thread(r); t.start();
2 构建Thread子类
class test extends Thread{ public void run(){ //实现代码 } }
直接new test().start()
注意调用的的start方法,调用run方法只会执行同一个线程,start方法会创建新进程并执行。
thread类里有两个方法,interrupted 判断线程是否终止,若运行,会执行终止,isinterrupted则只进行判断;
线程锁
private Lock lock = new ReentrantLock(); lock.lock();; try{ // }finally{ lock.unlock(); }
ReentrantLock类的signAll方法:用于通知正在等待的线程
synchronized关键字 用于修饰方法,建议使用,同样也有wait和signalAll
volatile关键字 独立变量的锁,没有原子性
callable和future可返回泛型的线程方法,线程池实现基于此。FutureTask可将Callale转换成Future和Runnable