如何理解Java主线程(详细指南)

Java为多线程编程提供了内置支持。多线程程序包含两个或多个可以同时运行的部分。这种程序的每个部分都称为一个线程, 并且每个线程都定义了单独的执行路径。
主线程
当Java程序启动时, 一个线程立即开始运行。这通常称为主要程序的线程, 因为它是程序开始时执行的线程。
特性:

  • 它是从中产生其他"子"线程的线程。
  • 通常, 它必须是完成执行的最后一个线程, 因为它执行各种关闭操作
流程图 :
如何理解Java主线程(详细指南)

文章图片
如何控制主线程?
启动我们的程序时自动创建主线程。为了控制它, 我们必须获得对其的引用。这可以通过调用方法来完成currentThread()在Thread类中存在。此方法返回对其调用的线程的引用。 Main线程的默认优先级为5, 所有其余用户线程的优先级将从父级继承到子级。
// Java program to control the Main Thread public class Test extends Thread { public static void main(String[] args) { // getting reference to Main thread Thread t = Thread.currentThread(); // getting name of Main thread System.out.println( "Current thread: " + t.getName()); // changing the name of Main thread t.setName( "Geeks" ); System.out.println( "After name change: " + t.getName()); // getting priority of Main thread System.out.println( "Main thread priority: " + t.getPriority()); // setting priority of Main thread to MAX(10) t.setPriority(MAX_PRIORITY); System.out.println( "Main thread new priority: " + t.getPriority()); for ( int i = 0 ; i < 5 ; i++) { System.out.println( "Main thread" ); }// Main thread creating a child thread ChildThread ct = new ChildThread(); // getting priority of child thread // which will be inherited from Main thread // as it is created by Main thread System.out.println( "Child thread priority: " + ct.getPriority()); // setting priority of Main thread to MIN(1) ct.setPriority(MIN_PRIORITY); System.out.println( "Child thread new priority: " + ct.getPriority()); // starting child thread ct.start(); } }// Child Thread class class ChildThread extends Thread { @Override public void run() { for ( int i = 0 ; i < 5 ; i++) { System.out.println( "Child thread" ); } } }

输出如下:
Current thread: main After name change: Geeks Main thread priority: 5 Main thread new priority: 10 Main thread Main thread Main thread Main thread Main thread Child thread priority: 10 Child thread new priority: 1 Child thread Child thread Child thread Child thread Child thread

Java中main()方法和主线程之间的关系
对于每个程序, 将通过以下方式创建一个主线程虚拟机(Java虚拟机)。 " Main"线程首先验证main()方法的存在, 然后初始化该类。请注意, 从JDK 6开始, main()方法在独立的Java应用程序中是必需的。
使用主线程(仅单线程)进行死锁
我们可以仅使用Main线程即仅使用单个线程来创建死锁。以下Java程序演示了这一点。
// Java program to demonstrate deadlock // using Main thread public class Test { public static void main(String[] args) { try {System.out.println( "Entering into Deadlock" ); Thread.currentThread().join(); // the following statement will never execute System.out.println( "This statement will never execute" ); } catch (InterruptedException e) { e.printStackTrace(); } } }

输出如下:
Entering into Deadlock

说明:
语句" Thread.currentThread()。join()"将告诉主线程等待该线程死亡(即等待自身)。因此, 主线程等待自身死亡, 这只是一个死锁。
相关文章: Java中的守护程序线程.
【如何理解Java主线程(详细指南)】如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

    推荐阅读