Java多线程基础
1. 前言
这篇文章,是对Java多线程编程的基础性介绍。
文章将介绍Java语言为支持多线程编程提供的一些特性。通过这篇文章,您将了解到如何通过Java语言创建一个线程,如何通过内置的锁来实现线程间的同步,如何在线程间进行通信以及线程的中断机制。
2. 什么是线程
线程是操作系统调度的最小单位,在一个进程中,一般至少有一个线程在运行。一个进程中包含的多个线程,在多核处理器中,操作系统可以将多个线程调度到不同的CPU核心上运行,多个线程可以并行运行。
在同一个进程中的多个线程,共享同一个进程空间,这意味着,线程间通信的成本相对进程间会低很多,但是由于可以同时访问同一个内存地址,所以不正确的同步可能会导致数据竞争而发生错误。
3. 创建一个线程
在Java中,创建一个线程最简单的方式是继承 java.lang.Thread 类。通过重写Thread类的run()方法,可以将线程中需要执行的代码放到run()方法中,这样,当这个线程被启动以后,可以在新启动的线程中执行这些逻辑。
View Code
上面的代码中,我们通过继承Thread创建了一个SimpleThread类,然后重写了Thread的run()方法,把需要在新的线程中执行的逻辑放到run()方法中,当通过Thread的start()方法启动线程以后,run()方法就会在新线程中被执行。
如果采用这种方式创建线程,那么当我们有多个不同的逻辑需要并行执行,那么我们需要像上面一样,通过继承的方式创建多个Thread的子类,然后重写run()方法来实现。这样看来,我们其实是创建了多个不同类型的线程,然后启动它们。
除了采用继承Thread类型,重新run()方法来创建线程,java还提供了一个java.lang.Runnable接口来"创建"多线程。准确的说,Runnable接口并没有创建一个线程,而是通过实现Runnable接口,我们可以定义一个可以被线程执行的任务。
<