猿教程 Logo

Java 多线程

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效:去购买

Java中的多线程是一个同时执行多个线程的过程。

线程基本上是一个轻量级的子进程,一个最小的处理单元。 多处理和多进程,都用于实现多任务。

但是我们使用多线程而不是多进程,因为线程共享一个公共内存区域。 它们不分配单独的内存区域,因此节省了内存,线程之间的上下文切换花费的时间比进程少。

Java多线程主要用于游戏,动画等。

Java多线程的优点

1)线程是独立的,您可以同时执行多个操作。

2)您可以一起执行许多操作,以便节省时间。

3)线程是独立的,因此如果在单个线程中发生异常,它不会影响其他线程。


多任务

多任务是同时执行多个任务的过程。 我们使用多任务来利用CPU。 多任务可以通过两种方式实现:

  • 基于进程的多任务(多处理)

  • 基于线程的多任务(多线程)

1)基于进程的多任务(多处理)

  • 每个进程在存储器中具有其自己的地址,即每个进程分配单独的存储器区域。

  • 进程是重量级的。

  • 进程之间的通信成本高。

  • 从一个进程切换到另一个进程需要一些时间来保存和加载寄存器,内存映射,更新列表等。

2)基于线程的多任务(多线程)

  • 线程共享相同的地址空间。

  • 线程是轻量级的。

  • 线程之间的通信成本低。

注意:线程至少需要一个进程。


什么是Java中的Thread

一个线程是一个轻量级的子进程,一个最小的处理单元。 它是一个单独的执行过程。

线程是独立的,如果在一个线程中发生异常,它不影响其他线程。 它们共享一个公共内存区域。


如上图所示,线程在进程内部执行。 在线程之间有上下文切换。 在OS中可以有多个进程,一个进程可以有多个线程。

注意:一次只执行一个线程。

你知道吗?
  • 如何通过两个线程执行两个任务?

  • 如何通过匿名类执行多线程?

  • 什么是Thread Schedular,什么是抢占调度和时间分割之间的区别?

  • 如果我们开始一个线程两次会发生什么?

  • 如果我们调用run()方法而不是start()方法,会发生什么?

  • join方法的目的是什么?

  • 如果没有剩余用户线程,为什么JVM终止守护线程?

  • 什么是关闭钩?

  • 什么是垃圾收集?

  • finalize()方法的目的是什么?

  • gc()方法是什么?

  • 什么是同步和为什么使用同步?

  • 同步方法和同步块之间有什么区别?

  • 执行静态同步的两种方法是什么?

  • 什么是死锁,什么时候可能发生?

  • 什么是螺纹沟通或合作?

我们将学习什么?
  • 多线程

  • 线程的生命周期

  • 创建Thread的两种方式

  • 如何通过多线程执行多个任务

  • 线程Schedular

  • 线程休眠

  • 我们可以开启一个线程两次吗?

  • 如果我们调用run()方法而不是start()方法,会发生什么?

  • 加入线程

  • 命名线程

  • 线程的优先级

  • 守护线程

  • ShutdownHook

  • 垃圾收集

  • 与同步方法同步

  • 同步块

  • 静态同步

  • 僵局

  • 线程间通信

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效: 去购买


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Java/multithreading-in-java.html