java线程系列(一)——简介

本文详细介绍了线程的类型,包括守护线程和常规线程,以及如何通过Thread类、Runnable和Callable接口创建多线程任务。探讨了线程状态和关键的Thread方法,如yield(), sleep(), join(), interrupt()等的使用,以及如何正确地停止线程,避免使用过时的stop()方法,转而使用interrupt系列方法来实现线程的安全退出。

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

线程类型

daemon线程: 表明为守护线程,当所有非daemon线程退出时,该类型线程自动退出。
非daemon线程: 常规线程,所有线程退出,进程结束。

Thread类创建多线程任务的方式:

1.继承Thread,override run()方法。
2.实现Runnable接口,new Thread(Runnable task)
3.实现Callable接口,new FutureTask(Callable task),(FutureTask 实现了 Runnable和Future接口)new Thread(Runnable task)

线程状态:

006.jpeg

Thread方法

方法名,#为对象方法解释
Thread#yield()执行此方法会向系统线程调度器(Schelduler)发出一个暗示,告诉其当前JAVA线程打算放弃对CPU的使用,但该暗示,有可能被调度器忽略。使用该方法,可以防止线程对CPU的过度使用,提高系统性能
Thread#sleep(time);Thread.sleep(time, nanos)线程进入阻塞状态,但不释放锁。
Thread#join();Thread#join(time)A线程调用B线程的join()方法,将会使A等待B执行,直到B线程终止。
Thread#interrupt()对thread的中断标志位(boolean)进行类似get和set操作,具体动作由用户代码逻辑完成。

停止线程的方法:

Tread.stop()
应使用interrupt,,isInterrupted,interrupted方法
interrupt系列方法,只是对thread的中断标志位(boolean)进行类似get和set操作,具体动作由用户代码逻辑完成。
1.interrupt方法将对处于非阻塞状态的线程的标志位标记为true,若线程处于阻塞状态,则线程将抛出InterruptedException异常,同时线程的标志位被清零(false)。
2.isInterrupted方法将返回该线程标志位(boolean)
3.interrupted方法将返回该线程标志位,然后将线程标志位清零(false){可用于响应一次中断}
结合上述方法,可灵活运用,实现线程的安全退出
注:执行IO任务类等线程无法被中断,无法抛出InterruptedException异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值