java前台线程_Java 多线程使用要点分析

本文详细介绍了Java多线程中的sleep()和wait()方法的异同,包括它们在让线程暂停执行、释放锁方面的区别。同时,讨论了线程的停止、中断状态以及守护线程的概念。还提到了线程的优先级和线程组的使用,强调了在多线程编程中正确管理线程的重要性。
摘要由CSDN通过智能技术生成

多线程细节问题

sleep方法和wait方法的异同点?

相同点:

让线程处于冻结状态.

不同点:

sleep必须指定时间

wait可以指定时间也可以不指定时间

sleep时间到,线程处于临时阻塞状态或者运行态

wait如果没有时间,必须通过notify或者notifyAll唤醒

sleep不一定非要定义在同步中

wait必须定义在同步中

都定义在同步中时

sleep放执行权,不放锁

wait放执行权,放锁

syschronized(obj)

{

wait();// 0 1 2

code...

}

syschronized(obj)

{

notifyAll();// 3

code...

}

线程如何停止

stop方法

stop方法已经过时,看描述发现,有其他解决方案.

线程结束:就是让线程任务代码执行完,run方法结束

run方法如何结束?

通过定义循环

注意:万一线程在任务中处于冻结状态他还能判断标记吗?

所谓的中断状态并不是停止线程.

interrupt中断状态使

如果目标线程等待很长时间,则应使用 interrupt 方法来中断该等待

所谓的中断并不是停止线程。

interrupt的功能是 将线程的冻结状态清除,让线程恢复到的运行状态(让线程重新具备cpu的执行资格)。

因为时强制性的所以会有异常InterruptedException发生,可以在catch中捕获异常,

在异常处理中,改变标记让循环结束,让run方法结束。

守护线程

守护线程:也可以理解为后台线程,之前创建的都是前台线程。

只要线程调用了setDaemon(true);就可以把线程标记为守护线程。

前台后台线程运行时都是一样的,获取CPU的执行权执行。

只有结束的时候有些不同。

前台线程要通过run方法结束,线程结束。

后台线程也可以通过run方法结束,线程结束,还有另一种情况,

当进程中所有的前台线程都结束了,这时无论后台线程处于什么样的状态,都会结束,从而进程会结束。

进程结束依赖的都是前台线程。

线程优先级

线程的优先级:用数字标识的,1-10

其中默认的初始优先级时5 最明显的三个优先级 1,5,10。

setPriority(Thread.MAX_PRIORITY);

线程组

线程组:ThreadGroup:可以通过Thread的构造函数明确新线程对象所属的线程组。

线程组的好处,可以对多个同组线程,进行统一的操作。

默认都属于main线程组。

匿名内部类

Runnable rn = new Runnable() {

public void run() {

}

};

//上述代码等价于

class Anomymous implements Runnable {

public void run() {

}

}

Runnable rn = new Anomymous();

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值