学习Java多线程之线程定义、状态和属性

学习Java多线程之线程定义、状态和属性:完整攻略

学习Java多线程之线程定义、状态和属性:完整攻略

1. 线程简介

在计算机的世界里,线程是操作系统能够进行运算调度的最小单位,是程序运行的最小单元。Java中线程是Thread类的实例,多线程的并发编程是Java开发中非常重要的一个方面。

2. 创建线程

Java创建线程有两种方式:继承Thread类和实现Runnable接口。本文以实现Runnable接口的方式进行说明。

实现Runnable接口步骤:

  1. 创建一个实现了Runnable接口的类;
  2. 实现Runnable接口中的run()方法;
  3. 创建一个Thread对象,并传入Runnable接口的实现类;
  4. 调用Thread对象的start()方法,开始执行。

示例代码1:

public class MyRunnable implements Runnable {
   public void run() {
      System.out.println("新线程执行了");
   }
}

public class Test {
   public static void main(String [] args) {
      MyRunnable mr = new MyRunnable();
      Thread t = new Thread(mr);
      t.start();
      System.out.println("主线程执行结束");
   }
}

输出结果:

主线程执行结束
新线程执行了

3. 线程状态

线程在执行过程中会不断地改变状态,Java中线程状态共有6种。

  • New(新创建):新创建线程对象,但还未调用start()方法。
  • Runnable(可运行):已经在JVM中启动,尚未运行完成的线程。
  • Blocked(阻塞):线程被暂时停止执行,通常是在等待某个资源或锁。
  • Waiting(无限等待):线程无限等待特定时间或者其他线程调用该线程的notify()/notifyAll()方法才会被唤醒。
  • Timed Waiting(限时等待):线程等待一定时间后才会被唤醒。
  • Terminated(结束):线程已经执行完毕或者出现异常而结束。

4. 线程属性和方法

在创建线程之后,我们可以获取线程的属性和调用线程相关方法。

线程属性包括:

  • Name(名称):线程名称;
  • Priority(优先级):线程优先级;
  • Daemon(守护线程):是否为守护线程,即该线程是否随JVM一起结束。

线程方法包括:

  • start():启动线程;
  • run():线程的主要方法;
  • interrupt():打断线程;
  • join():等待线程执行完毕;
  • sleep():线程睡眠;
  • yield():线程暂停等待更高优先级的线程执行。

示例代码2:

public class MyThread extends Thread {
   public void run() {
      System.out.println("线程名:" + getName());
      System.out.println("线程优先级:" + getPriority());
      System.out.println("是否为守护线程:" + isDaemon());
      try {
         Thread.sleep(2000);
      } catch (InterruptedException e) {
         e.printStackTrace();
      }
      System.out.println("线程状态:" + getState());
      System.out.println("线程执行完毕");
   }

   public static void main(String[] args) {
      MyThread myThread = new MyThread();
      myThread.setName("MyThread");
      myThread.setPriority(Thread.MAX_PRIORITY);
      myThread.setDaemon(true);
      myThread.start();
      try {
         myThread.join();
      } catch (InterruptedException e) {
         e.printStackTrace();
      }
      Thread.yield();
      System.out.println("主线程执行");
   }
}

输出结果:

线程名:MyThread
线程优先级:10
是否为守护线程:true
线程状态:TERMINATED
线程执行完毕
主线程执行

5. 总结

学习Java多线程之线程定义、状态和属性简单来说就是大家熟知的“创建线程”,但是我们始终应该对多线程程序有一个全面的了解。这样才能写出高效、可维护、可扩展的Java代码。

本文标题为:学习Java多线程之线程定义、状态和属性

基础教程推荐