多线程总结

1、创建线程的四种方式

1、通过继承Thread类实现,复写run方法 
 	特点:继承Tread类,实例化一个线程时,调用start()也只能启动一个线程。实例化多个线程实例,每个实例调用start()可以启动多个线程,但线程中的资源也是多份的。
2、实现Runnable接口,复写run方法 
	特点:实现Runnable接口只需要实例化一个线程类就可以创建多个线程,并且多个线程共享同一份资源
		 继承了Tread类后不能同时继承其它类了,而实现了Runnable接口后还可实现其它接口和继承其它类。
		 Thread本身也是Runnable接口的一个实现类。
3、实现Callable
	call方法中可以有返回值,并且抛出异常。Runnable的run方法无返回值。
4、创建线程池实现
	就是创建一个实现多个线程的容器
	线程池提供了一个线程队列,队列中保存所有等待状态的线程,避免创建与销毁额外开销,提高了响应速度。

2、线程池

2.1 线程池的7个参数?
corePoolSize	核心线程池基本大小,核心线程数
maximumPoolSize	线程池最大线程大小
keepAliveTime	线程空闲后的存活时间
TimeUnit unit	线程空闲后的存活时间单位
BlockingQueue workQueue	存放任务的阻塞队列
ThreadFactory threadFactory	创建线程的工厂//该接口的目的是定制一个线程,可以设置线程的优先级、名字、是否后台线程、状态等。
RejectedExecutionHandler handler	当阻塞队列和最大线程池都满了之后的饱和策略
2.2 线程池的提交两种方式的区别?
	execute()submit()
	第一种区别:
	1、execute只能提交Runnable类型的任务,无返回值。
	2、submit既可以提交Runnable类型的任务,也可以提交Callable类型的任务,会有一个类型为Future的返回值,但当任务类型为Runnable时,返回值为null。
	第二种区别:
	execute在执行任务时,如果遇到异常会直接抛出,而submit不会直接抛出,只有在使用Future的get方法获取返回值时,才会抛出异常
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值