Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误与异常

Java 多线程

Java 同步

Java 网络

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 与框架

Java 类参考

Java 有用资源

Java - 主线程



Java 中的主线程

每当我们运行 Java 程序时,都会自动创建主线程。此线程负责执行 Java 程序。Java 运行时搜索 main 方法以执行并基于它创建主线程。如果我们创建多个线程,则所有子线程都将从主线程生成。此主线程是第一个创建的线程,通常也是最后一个线程,它用于执行关闭任务。

如何控制主线程?

程序启动时,JVM 会自动创建主线程。但是,您可以使用不同的 Thread 方法和技术来控制主线程。

以下是一些控制主线程的方法。

Java 主线程示例

在此示例中,我们展示了一个简单的单线程程序,其中我们没有声明任何线程并在程序执行中检查线程名称。

package com.tutorialspoint;
public class TestThread {
   public void printName() {
	   System.out.println("Thread Name: " + Thread.currentThread().getName());
	   System.out.println("Thread Priority: " +Thread.currentThread().getPriority());
   }	
   public static void main(String args[]) {
	   TestThread thread = new TestThread();
	   thread.printName();	   
   }
}

输出

Thread Name: main
Thread Priority: 5

主线程的更多示例

示例

在此示例中,我们创建了一个 ThreadDemo 类,它扩展了 Thread 类。我们没有向 Thread 传递任何名称,它将打印系统分配给线程的默认名称。在 main 方法中,我们创建了两个线程。在输出中,您可以检查,当前线程名称打印为 main,而线程是使用 constructor() 方法调用创建的。

package com.tutorialspoint;
class ThreadDemo extends Thread {
   ThreadDemo( ) {
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: New");
   }
   public void run() {
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Running");
      for(int i = 4; i > 0; i--) {
         System.out.println("Thread: " + Thread.currentThread().getName() + ", " + i); 
      }
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Dead");
   }
   public void start () {
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Start");
      super.start();
   }
}
public class TestThread {
   public static void main(String args[]) {
	  ThreadDemo thread1 = new ThreadDemo();
	  ThreadDemo thread2 = new ThreadDemo();
	  thread1.start();
	  thread2.start();
   }
}

输出

Thread: main, State: New
Thread: main, State: New
Thread: main, State: Start
Thread: main, State: Start
Thread: Thread-0, State: Running
Thread: Thread-0, 4
Thread: Thread-0, 3
Thread: Thread-1, State: Running
Thread: Thread-1, 4
Thread: Thread-0, 2
Thread: Thread-1, 3
Thread: Thread-0, 1
Thread: Thread-1, 2
Thread: Thread-0, State: Dead
Thread: Thread-1, 1
Thread: Thread-1, State: Dead

示例 2

在此示例中,我们创建了一个 ThreadDemo 类,它扩展了 Thread 类。我们没有向 Thread 传递任何名称,它将打印系统分配给线程的默认名称。在 main 方法中,我们创建了两个线程。在输出中,您可以检查,当前线程名称打印为 main,而线程是使用 constructor() 方法调用创建的。在 main 方法的末尾,我们打印主线程的状态。

package com.tutorialspoint;
class ThreadDemo extends Thread {
   ThreadDemo( ) {
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: New");
   }
   public void run() {
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Running");
      for(int i = 4; i > 0; i--) {
         System.out.println("Thread: " + Thread.currentThread().getName() + ", " + i); 
      }
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Dead");
   }
   public void start () {
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Start");
      super.start();
   }
}
public class TestThread {
   public static void main(String args[]) {
	  ThreadDemo thread1 = new ThreadDemo();
	  ThreadDemo thread2 = new ThreadDemo();
	  thread1.start();
	  thread2.start();
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Dead");
   }
}

输出

Thread: main, State: New
Thread: main, State: New
Thread: main, State: Start
Thread: main, State: Start
Thread: Thread-0, State: Running
Thread: main, State: Dead
Thread: Thread-1, State: Running
Thread: Thread-0, 4
Thread: Thread-1, 4
Thread: Thread-1, 3
Thread: Thread-1, 2
Thread: Thread-1, 1
Thread: Thread-1, State: Dead
Thread: Thread-0, 3
Thread: Thread-0, 2
Thread: Thread-0, 1
Thread: Thread-0, State: Dead

在此输出中,您可以检查主线程在早期阶段已完成,但线程仍在运行并完成了它们的执行。

广告