Java 多线程使用要点分析

作者:lqh 时间:2023-12-18 22:41:36 

多线程细节问题

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();

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

标签:Java,多线程
0
投稿

猜你喜欢

  • 兼容Spring Boot 1.x和2.x配置类参数绑定的工具类SpringBootBindUtil

    2023-11-03 05:35:06
  • SpringDataJPA在Entity中常用的注解介绍

    2023-11-27 09:40:36
  • Android UI设计系列之自定义Dialog实现各种风格的对话框效果(7)

    2023-11-18 14:26:37
  • Java金额大小写的转换方法

    2023-08-23 00:26:11
  • 巧用Dictionary实现日志数据批量插入

    2022-03-10 12:31:05
  • 基于springboot+vue实现垃圾分类管理系统

    2023-04-17 08:39:11
  • C# 通过NI-VISA操作Tektronix TBS 2000B系列示波器的实现步骤

    2023-11-02 01:44:38
  • 配置Ant执行Jmeter脚本过程详解

    2023-11-09 22:35:29
  • Java实现常见排序算法的优化

    2022-05-20 13:08:37
  • java tostring方法重写代码示例

    2022-12-31 22:38:07
  • Android利用Badge组件实现未读消息小红点

    2021-11-09 10:30:33
  • Java多线程之同步锁-lock详解

    2023-12-16 14:40:08
  • Java设计模式之访问者模式

    2023-04-17 20:00:15
  • Java设计模式开发中使用观察者模式的实例教程

    2021-06-22 15:54:19
  • Freemarker如何生成树形导航菜单(递归)

    2023-02-24 13:52:16
  • Android实现简单音乐播放器(MediaPlayer)

    2023-04-24 19:28:57
  • Java中的main函数的详细介绍

    2021-10-03 16:09:16
  • Spring Boot 结合 aop 实现读写分离

    2023-09-29 07:53:02
  • Java详细讲解不同版本的接口语法和抽象类与接口的区别

    2022-09-30 01:46:38
  • 逆波兰计算器(Java实现)

    2021-10-18 09:45:01
  • asp之家 软件编程 m.aspxhome.com