java线程学习笔记

时间:2023-02-26 21:11:33

线程的实现方法有两种:

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