Java线程与多线程教程
英文原文:Java Thread and Multithreading Tutorial
Java 线程是执行某些任务的轻量级进程。Java 通过 Thread 类提供多线程支持,应用可以创建并发执行的多个线程。 应用中有两类线程——用户线程和守护线程。当启动应用时,main 线程是创建的第一个用户线程,我们可以创建多个用户线程和守护线程。当所有用户进程执行完毕时,JVM 终止程序。 可以对不同的线程设置不同的属性,但并不保证高优先级的线程在低优先级线程之前执行。线程调度器是操作系统的部分实现,当一个线程启动后,它的执行被线程 调度器控制,JVM 不会控制它的执行。 可通过扩展 Thread 类实现的 Runnable 接口创建线程。
Thread t = new Thread (new Runnable (){ @Override public void run () { } });
以上用几行代码就创建了新线程,在此,作为匿名类创建的 Runnable 接口,请阅读这篇文章学习内部类,嵌套类和匿名内部类。 几周之前,针对线程我已经发表了几篇有用的文章,你可以一步一步按照如下顺序学习 Java 中的线程。
这是线程教程系列的第一篇文章,阅读它来了解进程和线程。 线程和进程之间的区别是什么,使用线程的优势和如何使用 Runnable 接口和 Thread 类创建线程。 该文还比较了 Runnable 接口和 Thread 类。
Java 线程休眠 用于暂停当前执行的线程, 在将来的文章中,我们将广泛的使用线程休眠,因此最好了解它是如何工作的以及是否准确?
有时我们需要等待其他线程结束后再继续执行,我们可以使用线程的加入来实现,本文将学习线程的加入是如何工作的以及何时使用它。
理解线程的不同状态是重要的,本文将学习线程如何改变他的状态以及线程调度器如何改变线程的状态。
Java 线程的 wait, notify 和 notifyAll
Java Object 类包含三个方法,使用这三个方法,线程可以交流对于一个资源的锁状态,通过简单地 Waiter-Notifier 实现学习如何使用这些方法。
Java 线程安全于同步(Thread Safety and Synchronization)
我们知道线程共享对象资源,但这将导致数据损坏,因为它们都不是原子操作。本文将学习使用不同方法实现 Java 的线程安全,学习正确使用 synchronization 操作符,synchronized 方法和 synchronized 块。本文还有很多使用 synchronized 实例并讲解使用它们带来的问题。
主线程中的 Java 异常(Java Exception in thread main)
JVM 使用 main 方法创建第一个线程,本文介绍日常遇到的通用异常和产生这些异常的根本原因以及如何解决它们。
单例类中的线程安全(Thread Safety in Singleton Class)
本文将学习创建单例类的基本概念,什么是线程安全问题与他们如何能够做到在单例类的线程安全。
本文解释了守护进程和如何在 Java 中创建守护线程。
我们知道线程共享对象的变量,但如何得到类级别的线程局部变量呢?Java 提供了 ThreadLocal 实用类来创建线程局部变量,在这篇文章中学习如何在 Java 程序中创建ThreadLocal变量。
Java 线程转储提供程序的当前线程信息,这个信息对分析应用的性能问题或者查找解决死锁情况很有帮助,这篇文章阐明了 Java 中用于产生线程转储的不同方法。
如何分析和避免 Java 中的死锁(How to Analyze Deadlock and avoid it in Java)
死锁是多线程等待彼此释放资源造成的循环依赖的情况。本文讨论了如何在 Java 程序中制造死锁,如何使用线程转储分析死锁以及避免 Java 程序死锁的最佳实践。
本文阐述了如何使用 Java 的 Timer 和 TimerTask 类来创建以固定时间间隔运行的任务。使用一个例子展现如何使用和取消计时器。
Java 生产者与消费者问题(Producer Consumer Problem)
Java 5 之前,生产者-消费者问题可以使用 wait ()和 notify ()方法解决,但 BlockingQueue 的引入更加简化了这个问题。通过本文我们学习 Java 中如何使用 BlockingQueue 来解决生产者-消费者问题。
Java 线程池是等待处理任务的工作线程的集合,Java5 中引入的 Executor 框架使得它很容易在 java 中使用 Executors 和的 ThreadPoolExecutor 类创建线程池,本文学习如何使用它们来在 Java 中创建线程池。
有时我们希望线程可以返回可用的变量,Java5 的 Callable 就可用于这种情况,类似 Runnable 接口,我们可以使用 Executor 框架之星这些任务。
FutureTask 类是实现 Future 接口的基础类。 使用带 Callable 的实现和 Executors 的 FutureTask 进行异步处理。 FutureTask 提供的实施方法来检查任务的状态,一旦执行结束,立刻将值返回给调用程序。覆写某些 Future 接口的实现方法是非常方便的。
Java FutureTask 实例(FutureTask Example)
该系列将随着更多线程教程文章的发表而持续增加,所以请保存为书签,以备将来需要。 请让通知我们是否遗漏了你想学习的指示。
翻译: ImportNew.com - liken