Java 中的多线程 - 你必须知道的一切

當我們執行實際應用程式時,我們使用優秀的處理器來執行速度更快,但只有處理器的速度不能讓您的應用程式執行速度更快。

什么是多线路?

Multithreading是一个编程概念,应用程序可以创建一个小单位的任务并行执行. 如果你在计算机上工作,它运行多个应用程序并分配处理功率给它们. 一个简单的程序在序列中运行,代码声明执行一个接一个。

多元化 vs 多元化

当我们谈论多线路时,我们不在乎机器是否有2核处理器或16核处理器。我们的工作是创建一个多线路应用程序,让操作系统处理分配和执行部分。

Java 如何支持多链接?

Java 对多线程应用具有很好的支持. Java 支持通过 Thread 类多线程。Java Thread 允许我们创建一个轻量级的过程,执行一些任务。我们可以在我们的程序中创建多个线程并启动它们。

什么是不同类型的线索?

应用程序中有两种类型的线条 - 用户线条和daemon线条. 当我们启动应用程序时, main是第一个创建的用户线条。

什么是 Thread Priority?

当我们创建一个线程时,我们可以分配它的优先级。我们可以为不同的线程设置不同的优先级,但它不保证较高的优先级线程会比较低的优先级线程先执行。

如何在Java中创建线程?

我们可以通过实施 Runnable接口或通过扩展 Thread类来创建 Threads。

1Thread t = new Thread(new Runnable(){
2    @Override
3    public void run() {
4    }
5});

上面是一个单行声明来创建一个新的线条. 在这里,我们正在创建一个可运行的类作为一个匿名类别. 如果你熟悉 lambda 表达式,我们可以创建一个线条与更短的代码。

1Runnable runnable = () -> System.out.println("Hello");

一旦我们创建了一个线程,我们必须通过调用 start() 方法开始执行它。

1runnable.start();

我写了很多文章,解释了Java中的多线路概念,您可以顺序通过这些内容,了解有关多线路的所有信息,其真实使用、线程生命周期、线程池等。

1. [Java 线程和可运行]( / 社区 / 教程 / java 线程 - 例子)

这是关于 Thread 类和 Runnable 接口的第一个帖子,您还将了解 Process 和 Thread 之间的区别是什么? 使用 Threads 的好处以及我们如何使用 Runnable 接口和 Thread 类创建 Threads。

2. [Java 线程睡眠]( / 社区 / 教程 / 线程睡眠 - Java)

Java 线条睡眠 用于暂停当前线条的执行. 我们将在未来的帖子中广泛使用线条睡眠,所以了解它是如何工作的,它是否准确?

3. Java Thread Join

有时我们需要等待其他线程完成执行,然后我们可以继续使用 ** 线程加入** 方法来实现这一点,了解它是如何工作的,以及我们何时应该使用它。

[Java 线程状态]( / 社区 / 教程 / 线程 - 生命周期 - 在java - 线程 - 状态 - 在java)

了解不同的 ** thread 状态很重要,了解一个 thread 如何改变其状态,以及操作系统的 thread 安排器如何改变一个 thread 的状态。

Java Thread wait, notify and notifyAll

Java Object 类包含三种方法来传达资源的锁定状态. 通过使用这些 Object 类方法的示例学习简单的等待通知实现。

6. [线程安全与同步]( / 社区 / 教程 / 线程安全-in-java)

我们知道 Threads 共享 Object 资源,这可能导致数据损坏,因为这些操作不是原子操作。了解我们如何使用不同的方法实现 Java 中的线程安全性。

Java Exception in thread main

JVM使用主方法创建了第一个线程,这篇文章解释了我们在日常生活中看到的一些常见例外,以及它们的根源原因以及如何修复它们。

8. [ Singleton 类中的线程安全]( / 社区 / 教程 / 线程安全 - 在 Java - Singleton - 类)

在本文中,您将了解创建 Singleton 类的基本概念. 不同实现的线程安全问题是什么? 我们如何在 Singleton 类中实现线程安全性。

9. Daemon Thread in Java

一个简单的文章解释了 daemon 线条以及我们如何在 java 中创建 daemon 线条。

10. Java Thread Local

我们知道线程共享 Object 的变量,但如果我们希望在类级别上创建线程本地变量,怎么办?Java 提供了 ThreadLocal 实用类来创建线程本地变量。

Java Thread Dump

Java Thread dump 提供当前线程的信息. 线程 dump 有助于分析应用程序的性能问题. 您可以使用线程 dump 来查找和修复僵局。

12. 如何在Java中分析Deadlock

Deadlock是一个等待多个线程相互释放导致循环依赖的资源的情况,本文讨论了我们可以在Java程序中获得僵局的情况,我们如何使用僵局来找到僵局,以及避免僵局的最佳做法。

13. Java Timer Thread

本文解释了我们如何使用 Java Timer和TimerTask类来创建工作以在计划间隔运行,一个示例程序显示其使用,以及我们如何取消计时器。

14. [Java 生产商消费者问题]( / 社区 / 教程 / Java-blockingqueue - 例子)

在 Java 5 之前,生产者-消费者问题可以通过 wait() 和 notify() 方法得到解决,但 BlockingQueue 引入使其变得非常容易。

15. Java Thread Pool

Java Thread Pool 是等待处理任务的工人线程的集合。Java 5 引入了 Executor 框架,使得在 java 中创建一个线程池非常容易。

[Java Callable Future]( / 社区 / 教程 / Java-callable - 未来 - 例子)

有时我们希望我们的 Thread 返回一些我们可以使用的值。Java 5 Callable 在这种情况下可以使用,这与Runnable接口类似。

17. Java FutureTask 例子

FutureTask 类是实施 Future 接口的基本混凝土类。我们与 Callable 实现和 Executors 一起使用,用于非同步处理。 FutureTask 类提供了实现方法来检查任务的状态,并在完成处理后返回呼叫程序的值。

结论

Multithreading是一个非常广泛的主题,在一个帖子中写所有关于它的一切是不可能的. 如果你通过上面的帖子顺序,你将学习关于Java的多线。

Published At
Categories with 技术
Tagged with
comments powered by Disqus