您现在的位置是:网站首页> 内容页

Java 多线程之 Thread 类 和 Runnable 接口初步使用

  • www.lt509.com
  • 2019-04-25
  • 376人已阅读
简介Thread类Thread类是在JDK1.0时就存在的,在Java中接触的多线程开发基本上都会从这个类开始。Thread之定义线程类使用Thread创建线程的方法很简

Thread 类

Thread 类是在 JDK1.0 时就存在的, 在 Java 中接触的多线程开发基本上都会从这个类开始。

Thread之定义线程类

使用 Thread 创建线程的方法很简单, Thread 是一个类, 在需要创建线程时, 我们只需要继承这个类, 并将 run() 方法进行重写即可。

class PrimeThread extends Thread { long minPrime PrimeThread(long minPrime) { this.minPrime = minPrime } @Override public void run() { System.out.println(Thread.currentThread().getName()+" begin") try { Thread.sleep(500) System.out.println(minPrime) } catch (InterruptedException e) { e.printStackTrace() } System.out.println(Thread.currentThread().getName()+" end") }}

以上的 PrimeThread 类, 继承了 Thread 类, 因此, 可以通过该类来实现开启线程。

Thread之开启线程

开启线程的方法具体如下:

public static void main(String[] args) { System.out.println("Thread begin:" + Thread.currentThread().getName()) PrimeThread primeThread = new PrimeThread(100L) primeThread.start() System.out.println("Thread end:" + Thread.currentThread().getName())}

调用时, new 出一个 PrimeThread 类的对象, 然后调用 start() 方法(注意不是调用 run() 方法)。最终得到的结果如下

创建一个简单的多线程在 Java 里面就是这么简单, 但因为 Java 是单继承的 因此继承 Thread 类是很不划算的一种做法。 而在 JDK1.0 提供了另一种方式可以对此进行弥补, 就是实现 Runnable 接口的方式。


Runnable 接口

Runnable 之定义线程类

至此,使用 Runnable 接口的方式来创建多线程类的方式就是实现 Runnable 然后重写 run() 方法, 具体如下:

public class PrimeRun implements Runnable { long minPrime PrimeRun(long minPrime) { this.minPrime = minPrime } public void run() { System.out.println(Thread.currentThread().getName() + " Run begin") try { Thread.sleep(500) System.out.println(minPrime) } catch (InterruptedException e) { e.printStackTrace() } System.out.println(Thread.currentThread().getName() + " Run end") }}

Runnable 之开启线程

大体上与继承 Thread 类类似, 但我们可以不用继承。 调用的话还是要通过 Thread 类的, 调用方式如下:

public static void main(String[] args) { System.out.println(Thread.currentThread().getName()+" begin") PrimeRun primeRun = new PrimeRun(100L)// new new Thread(primeRun).start() // 调用 System.out.println(Thread.currentThread().getName()+" end")}

运行结果如下

可以发现,其实该两种实现多线程的方式在本质上都是一样的。最终都通过 Thread 类中的 start() 方法来开启线程, 该方法可以通知 「线程规划器」本线程已经准备就绪, 系统就可以安排时间来调用 Thread 类中的 run() 方法。因此, 如果没有分配优先级, 线程执行的顺序就是根据系统的调度算法来执行, 是无序的。

以上是对 Java 最基本的开启多线程的方法进行了介绍, 后面几篇会更深入一下介绍一下几个方法和原理。

文章评论

Top