当前位置: 首页 > 编程笔记 >

Java 线程的生命周期完整实例分析

狄鹏
2023-03-14
本文向大家介绍Java 线程的生命周期完整实例分析,包括了Java 线程的生命周期完整实例分析的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了Java 线程的生命周期。分享给大家供大家参考,具体如下:

一 代码

/**
* @Title: ThreadStatus.java
* @Description: TODO(演示线程的生命状态)
*/
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.concurrent.TimeUnit;
public class ThreadStatus
{
  private static Lock lock = new ReentrantLock();
  public static void main(String[] args)
  {
    new Thread(new TimeWaiting(), "TimeWaitingThread").start();
    new Thread(new Waiting(), "WaitingThread").start();
    // 使用两个Blocked线程,一个获取锁,一个被阻塞
    new Thread(new Blocked(), "BThread-1").start();
    new Thread(new Blocked(), "BThread-2").start();
    new Thread(new Sync(), "SyncThread-1").start();
    new Thread(new Sync(), "SyncThread-2").start();
  }
  //该线程不断地进入随眠
  static class TimeWaiting implements Runnable
  {
    public void run() {
      while (true)
      {
        try {
          TimeUnit.SECONDS.sleep(5);
          System.out.println("I am TimeWaiting Thread: "+ Thread.currentThread().getName());
        } catch (InterruptedException e) { }
      }
    }
  }
  //该线程在Waiting.class实例上等待
  static class Waiting implements Runnable
  {
    public void run( )
    {
      while (true)
      {
        synchronized (Waiting.class)
        {
          try {
            System.out.println("I am Waiting Thread: "+ Thread.currentThread().getName());
            Waiting.class.wait( );
          } catch (InterruptedException e) {
            e.printStackTrace( );
          }
        }
      }
    }
  }
  //该线程在Blocked.class实例上加锁后,不会释放该锁
  static class Blocked implements Runnable
  {
    public void run( )
    {
      synchronized (Blocked.class)
      {
        while (true)
        {
          try {
            System.out.println("I am Blocked Thread: "+ Thread.currentThread().getName());
            TimeUnit.SECONDS.sleep(5);
          } catch (InterruptedException e) {}
        }
      }
    }
  }
  //该线程用于同步锁
  static class Sync implements Runnable
  {
    public void run( ) {
      lock.lock( );
      try {
        System.out.println("I am Sync Thread: "+ Thread.currentThread().getName());
        TimeUnit.SECONDS.sleep(5);
      } catch (InterruptedException e) { }
      finally {
        lock.unlock();
      }
    }
  }
}

二 运行

I am Waiting Thread: WaitingThread
I am Blocked Thread: BThread-1
I am Sync Thread: SyncThread-1
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
I am Sync Thread: SyncThread-2
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1

更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

 类似资料:
  • 线程的生命周期可以分为五个状态。 Java中线程的生命周期由JVM控制。Java线程状态如下: 新建 就绪 运行 阻塞 死亡 1)新建 如果创建Thread类的实例,但在调用start() 方法之前,则该线程处于新建状态。 2)就绪 调用start() 方法后,线程处于就绪状态,但是线程调度程序未将其选择为正在运行的线程。 3)运行 如果线程调度程序选择了该线程,则该线程处于运行状态。 4)阻塞

  • 本文向大家介绍Android编程中activity的完整生命周期实例详解,包括了Android编程中activity的完整生命周期实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了Android编程中activity的完整生命周期。分享给大家供大家参考,具体如下: android中 activity有自己的生命周期,对这些知识的学习可以帮助我们在今后写程序的时候,更好的理解其中遇到的

  • 本文向大家介绍iOS UIViewController的完整生命周期相关面试题,主要包含被问及iOS UIViewController的完整生命周期时的应答技巧和注意事项,需要的朋友参考一下 UIViewController的完整生命周期 -[ViewControllerinitWithNibName:bundle:]; -[ViewControllerinit]; -[ViewControlle

  • 本文向大家介绍java 线程的生命周期详解,包括了java 线程的生命周期详解的使用技巧和注意事项,需要的朋友参考一下 一个线程的生命周期: 新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。 就绪状态: 当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列

  • 本文向大家介绍Java线程的生命周期的详解,包括了Java线程的生命周期的详解的使用技巧和注意事项,需要的朋友参考一下 Java线程的生命周期的详解 对于多线程编程而言,理解线程的生命周期非常重要,本文就针对这一点进行讲解。 一、线程的状态 线程的存在有几种不同的状态,如下: New状态 Ready状态 Running状态 Dead状态 Non Runnable状态 1、New状态 New状态是线

  • 1. 前言 在之前的小节中我们介绍了 Vue 实例,本小节我们一起来了解一下 Vue 实例的生命周期。包括生命周期的几个阶段,以及各个阶段触发时机和作用。深入理解 Vue 的生命周期是本小的难点,同学们不仅需要知道生命周期的执行顺序,还要理解各生命周期的作用。 2. 慕课解释 每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据