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

本文介绍了Java中线程的控制方法,包括wait()和sleep()的区别,以及如何利用线程池来管理和调度线程。通过具体的代码示例展示了如何使用线程池执行Callable任务并获取结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值