1.在同步代码块中,用哪个对象锁就用该对象调用wait()方法
2.为什么wait()和notify()这些方法要定义在Object这个类中?
锁对象可以是任意对象,那么任意对象对应的类都是Object的子类,所以将方法定义在Object这个类中就会让任意对象对其进行调用
3.sleep()方法和wait()方法的区别
a.sleep()方法在同步代码块或者同步函数中,不释放锁
wait()方法在同步代码块或者同步函数中,释放锁
b.sleep()方法必须传入参数,参数就是时间,时间到了,自动醒来
wait()方法可以传入参数,也可以不传入--- 如果传入参数,用法和sleep()方法类似,时间到停止等待(通常用无参的)
4.线程的五种状态
5.线程池的概述
6.第三种创建线程的方式--callable(暂时了解)
public class Demo_08 { public static void main(String[] args) throws InterruptedException, ExecutionException { //创建线程池对象 ExecutorService pool = Executors.newFixedThreadPool(2); //可以执行Runnable对象或者Callable对象代表的线程 Future<Integer> f1 = pool.submit(new MyCallable(100)); Future<Integer> f2 = pool.submit(new MyCallable(50)); Integer i1 = f1.get(); Integer i2 = f2.get(); System.out.println(i1); System.out.println(i2); //关闭线程池 pool.shutdown(); } } class MyCallable implements Callable<Integer>{ private int number; public MyCallable(int number) { super(); this.number = number; } @Override public Integer call() throws Exception { int sum = 0; for(int i = 1;i<=number;i++) { sum+=i; } return sum; } }