多线程相关知识

本文介绍了Java线程的六种状态,包括New、Runnable、Blocked、Waiting、TimedWaiting和Terminated,并强调了线程的启动、优先级和守护线程设置。此外,还详细讲解了Executor服务,如newCachedThreadPool、newFixedThreadPool等,以及它们在管理线程池和优化性能方面的作用。

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

一、线程有如下6中状态

- New(新创建)

 当用new关键字创建线程时(new Thread(r)),此时线程还没有开始运行。它的状态为new。当一个线程处于新创建状态时,程序还没有开始执行线程中的代码。在线程运行之前还有一些基础工作要做。

- Runnable(可运行)

 一旦调用start方法,线程出入runnable状态。一个可运行状态的线程可能正在运行也可能没有运行。取决于操作系统给线程提供运行的时间

- Blocked(被阻塞)
- Waiting(等待)
- Timed Waiting(计时等待)
- Terminated(被终止)

可以用getState方法确认线程当前状态

线程状态

二、线程属性

- 线程优先级
 每一个线程都有一个优先级,线程继承父线程的优先级,可以通过setPriority设置MIN_PRIORITY(1)与MAX_PRIORITY(10)中间的任何值,NORM_PRIORITY为5

- 守护线程
 可通过setDaemon(true)将线程设置成守护线程
- 线程组
- 处理未捕获异常的处理器

三、Executor(执行器)

执行器构建线程池方法
newCachedThreadPool      必要时创建新线程,空闲线程保留时间60s
newFixedThreadPool       该池包含固定数量的线程,空闲线程一直保留
newSingleThreadExecutor     只有一个线程的“池”,该线程顺序执行每一个提交的任务
newScheduledThreadPoll      用于预定执行而构建的固定线程池 替代java.util.Timer
newSingleScheduledThreadExecutor    用于预定执行的单线程池

使用线程池好处:减少并发的线程数目,防止创建大量线程降低性能,以及虚拟机崩溃

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值