JavaSE小笔记--30(多线程4补充)

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;
	}	
}

猜你喜欢

转载自blog.csdn.net/xiaodunlp/article/details/80650818
今日推荐