可能是最全的java线程指南

Posted by Zeusro on May 9, 2019
👈🏻 Select language

java.util.concurrent这个包里面定义了各种线程相关的集合和类,接口.抽丝剥茧之后,我对那句”把我祖传的java包传给你”有了更深的理解.这个继承树看起来非常蛋疼. 不过最后我还是剥离分解,整理得出此文.

写到一半本来想放弃来着,因为这个网站提供了大量例子

导航

  1. 可能是最全的java线程指南(1-1)[任务调度类_Callable系]
  2. 可能是最全的java线程指南(1-2)[任务调度类_Executor系]
  3. 可能是最全的java线程指南(1-3)[任务调度类_CompletionService系]

没介绍到但比较重要的成员

RejectedExecutionHandler

ThreadPoolExecutor实现了该接口

提供了一种失败重试的事件机制.参考这里

ThreadFactory

这个一般用Guava的ThreadFactoryBuilder创建,比较少自己实现

异常

1
2
3
4
5
6
7
8
9
10
11
12
13
BrokenBarrierException	

CancellationException	

CompletionException	

ExecutionException	

RejectedExecutionException	

TimeoutException

参考链接:

  1. 40个Java多线程问题总结
  2. [翻译][Java]ExecutorService的正确关闭方法
  3. Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
  4. Java并发教程(Oracle官方资料)
  5. 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
  6. Lesson: Concurrency
  7. Package java.util.concurrent
  8. ava并发编程:Callable、Future和FutureTask

The java.util.concurrent package defines various thread-related collections, classes, and interfaces. After peeling back the layers, I have a deeper understanding of that phrase “passing my ancestral java package to you”. This inheritance tree looks quite painful.

But in the end, I still stripped it down, decomposed it, and organized it into this article.

I wanted to give up halfway through writing, because this website provides many examples.

  1. Possibly the Most Complete Java Thread Guide (1-1)[Task Scheduling Classes_Callable Series]
  2. Possibly the Most Complete Java Thread Guide (1-2)[Task Scheduling Classes_Executor Series]
  3. Possibly the Most Complete Java Thread Guide (1-3)[Task Scheduling Classes_CompletionService Series]

Members Not Introduced But Relatively Important

RejectedExecutionHandler

ThreadPoolExecutor implements this interface.

Provides a failure retry event mechanism. Reference here

ThreadFactory

This is generally created using Guava’s ThreadFactoryBuilder, rarely implemented yourself.

Exceptions

1
2
3
4
5
6
7
8
9
10
11
12
13
BrokenBarrierException	

CancellationException	

CompletionException	

ExecutionException	

RejectedExecutionException	

TimeoutException

  1. Summary of 40 Java Multithreading Questions
  2. [Translation][Java]Correct Way to Shut Down ExecutorService
  3. Java Concurrency Programming: CountDownLatch, CyclicBarrier and Semaphore
  4. Java Concurrency Tutorial (Oracle Official Material)
  5. How to Correctly Use wait, notify and notifyAll in Java – Using Producer Consumer Model as Example
  6. Lesson: Concurrency
  7. Package java.util.concurrent
  8. Java Concurrency Programming: Callable, Future and FutureTask

Пакет java.util.concurrent определяет различные коллекции, классы и интерфейсы, связанные с потоками. После снятия слоев я получил более глубокое понимание фразы “передать мой наследственный java-пакет вам”. Это дерево наследования выглядит довольно болезненно.

Но в конце концов я все же разобрал его, декомпозировал и организовал в эту статью.

Я хотел сдаться на полпути написания, потому что этот сайт предоставляет множество примеров.

Навигация

  1. Возможно, самое полное руководство по потокам Java (1-1)[Классы планирования задач_Серия Callable]
  2. Возможно, самое полное руководство по потокам Java (1-2)[Классы планирования задач_Серия Executor]
  3. Возможно, самое полное руководство по потокам Java (1-3)[Классы планирования задач_Серия CompletionService]

Члены, не представленные, но относительно важные

RejectedExecutionHandler

ThreadPoolExecutor реализует этот интерфейс.

Предоставляет механизм событий повторных попыток при сбое. См. здесь

ThreadFactory

Обычно создается с помощью ThreadFactoryBuilder от Guava, редко реализуется самостоятельно.

Исключения

1
2
3
4
5
6
7
8
9
10
11
12
13
BrokenBarrierException	

CancellationException	

CompletionException	

ExecutionException	

RejectedExecutionException	

TimeoutException

Ссылки:

  1. Сводка 40 вопросов о многопоточности Java
  2. [Перевод][Java]Правильный способ закрытия ExecutorService
  3. Параллельное программирование Java: CountDownLatch, CyclicBarrier и Semaphore
  4. Учебник по параллелизму Java (Официальные материалы Oracle)
  5. Как правильно использовать wait, notify и notifyAll в Java – Используя модель производителя-потребителя в качестве примера
  6. Урок: Параллелизм
  7. Пакет java.util.concurrent
  8. Параллельное программирование Java: Callable, Future и FutureTask


💬 讨论 / Discussion

对这篇文章有想法?欢迎在 GitHub 上发起讨论。
Have thoughts on this post? Start a discussion on GitHub.

在 GitHub 参与讨论 / Discuss on GitHub