线程池
1.线程池用的是队列思想,
1)栈思想在存取中有并发问题。
2)原因如下:长时间获取不到任务,线程是会被销毁的
2.对象监视器
锁对象,叫对象锁,也叫同步锁,还叫对象监视器
3.notify唤醒等待时间最久的线程。
等级最高的呢?
4.要用同一个锁对象,调用wait和notify方法。
wait,会释放锁对象,
sleep不会释放锁对象
5.线程一带走了锁,然后遇到wait进入了无限等待,
然后wait抢到走了锁还给了锁对象,
这样线程二拿到锁去唤醒线程一
那锁对象还在线程二手里?
6.好好学习一下泛型
7.Callable 和 Future接口的区别
Callable规定的方法是call(),而Runnable规定的方法是run().
Callable的任务执行后可返回值,而Runnable的任务是不能返回值的。
call()方法可抛出异常,而run()方法是不能抛出异常的。
运行Callable任务可拿到一个Future对象, Future表示异步计算的结果。
它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。
通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果。
Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务
8.callable可以start嘛
可以
public static void main(String[] args) throws InterruptedException, ExecutionException {
MyCallable<String> mc=new MyCallable<String>();
FutureTask<String> ft=new FutureTask<String>(mc);
new Thread(ft).start();
String result=ft.get();
System.out.println(result);
}