Object
public final void wait() 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。换句话说,此方法的行为就好像它仅执行 wait(0) 调用一样。
public final void notify() 唤醒在此对象监视器上等待的单个线程
public final void notifyAll() 唤醒在此对象监视器上等待的所有线程
Thread
public final ThreadGroup getThreadGroup() 返回该线程所属的线程组
Executors
public static ExecutorService newCachedThreadPool() 创建一个具有缓冲功能的线程池
2、多线程有几种实现方案,分别是哪几种?
答案:
有三种方式
方式一:
继承Thread类,重写run()方法
创建:
class Xxx extends Thread {
public void run(){
Thread.sleep(1000);
}
};
开启线程:
对象.start();
方式二:
实现Runnable接口,重写run()方法
开启线程:
Thread t = new Thread(对象);
t.start();
方式三:
实现Callable接口,重写call()方法
Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务
Callable和Runnable有几点不同:
1. Callable规定的方法是call(),而Runnable规定的方法是run()
2. Callable的任务执行后可返回值,而Runnable的任务是不能返回值的
3. Call()方法可抛出异常,而run()方法是不能抛出异常的
4. 运行Callable任务可拿到一个Future对象,FuTure表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果,通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果