当前位置: 首页 > 编程笔记 >

Java 多线程使用要点分析

卓星波
2023-03-14
本文向大家介绍Java 多线程使用要点分析,包括了Java 多线程使用要点分析的使用技巧和注意事项,需要的朋友参考一下

多线程细节问题

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。
html" target="_blank">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();

 

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

 类似资料:
  • 本文向大家介绍为什么要使用多线程?相关面试题,主要包含被问及为什么要使用多线程?时的应答技巧和注意事项,需要的朋友参考一下 先从总体上来说: 从计算机底层来说:线程可以比作是轻量级的进程,是程序执行的最小单位,线程间的切换和调度的成本远远小于进程。另外,多核 CPU 时代意味着多个线程可以同时运行,这减少了线程上下文切换的开销。 从当代互联网发展趋势来说:现在的系统动不动就要求百万级甚至千万级的并

  • 本文向大家介绍深入探究Java多线程并发编程的要点,包括了深入探究Java多线程并发编程的要点的使用技巧和注意事项,需要的朋友参考一下 关键字synchronized synchronized关键可以修饰函数、函数内语句。无论它加上方法还是对象上,它取得的锁都是对象,而不是把一段代码或是函数当作锁。 1,当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块

  • 问题内容: 我有一个缓存,该缓存是使用Simeple HashMap实现的。喜欢 - 大部分时间都使用此缓存从中读取值。我有另一个重新加载缓存的方法,在这个方法的内部,我基本上创建了一个新的缓存,然后分配了引用。据我了解,对象引用的分配是Java中的Atomic。 我了解,如果我不将缓存声明为易失性,则其他线程将无法看到更改,但是对于我的用例而言,将缓存中的更改传播到其他线程不是时间紧迫的,它们可

  • 线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。 进程是正在运行的程序的实例,或者:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。

  • 问题内容: 我有一个绝妙的主意,可以加快生成36个文件所需的时间:使用36个线程!不幸的是,如果我使用36个线程/会话启动一个连接(一个连接对象),那么与每次执行每个线程相比,所有事情的滞后性更大。 现在,如果我尝试创建36个新连接(36个连接对象),则每个线程都有一个单独的服务器连接,要么我退出内存异常(以某种方式程序仍然运行,并成功结束工作,但速度比我慢依次执行一个线程)。 那么该怎么办?如何

  • 《Java 编程要点》是一本 Java 的开源学习教程,主要介绍 Java 中应用广泛的部分(言外之意,本书不涉 Applet 以及 GUI 框架)。本书包括最新版本 Java 8 中的新特性,以及部分 JDK 9里面的内容,图文并茂,并通过大量实例带你走近 Java 的世界!