zoukankan      html  css  js  c++  java
  • Man方法

    Main方法相当一个主线程,JVM会自动寻找class文件中的main方法并执行(请思考tomcat加载java web项目启动的线程数和每次tomcat服务器接收到请求,是不是要发起一个线程去处理)

    以下的例子展现了Main主线程中启动了两个分支线程(mTh1和mTh2)

    package com.kevin.test1;
    
    class Thread1 extends Thread{
        private String name;
        public Thread1(String name) {
            super(name);
            this.name=name;
        }
        public void run() {
            System.out.println(Thread.currentThread().getName() + " 线程运行开始!");
            for (int i = 0; i < 5; i++) {
                System.out.println("子线程"+name + "运行 : " + i);
                try {
                    sleep((int) Math.random() * 10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println(Thread.currentThread().getName() + " 线程运行结束!");
        }
    }
    
    public class Main {
    
        public static void main(String[] args) {
            System.out.println(Thread.currentThread().getName()+"主线程运行开始!");
            Thread1 mTh1=new Thread1("A");
            Thread1 mTh2=new Thread1("B");
            mTh1.start();
            mTh2.start();
            // main是主线程,mTh1和mTh2属于主线程的分支线程,程序运行之后,JVM会主动调用程序的Main主线程,
            // 每次运行程序,JVM都会启动一个线程(进程由多个线程组成)
            //  join方法 主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束
            /*try {             */
            /*    mTh1.join();    */
            /*    mTh2.join();*/
            /*} catch (InterruptedException e) {*/
            /*    e.printStackTrace();*/
            /*}*/
            System.out.println(Thread.currentThread().getName()+ "主线程运行结束!");
    
        }
    
    }
    

     执行结果

    main主线程运行开始!
    main主线程运行结束!
    B 线程运行开始!
    A 线程运行开始!
    子线程B运行 : 0
    子线程A运行 : 0
    子线程B运行 : 1
    子线程A运行 : 1
    子线程B运行 : 2
    子线程A运行 : 2
    子线程B运行 : 3
    子线程A运行 : 3
    子线程B运行 : 4
    子线程A运行 : 4
    B 线程运行结束!
    A 线程运行结束!

    添加mTh1.join();  mTh1.join();执行结果:

    main主线程运行开始!
    A 线程运行开始!
    B 线程运行开始!
    子线程B运行 : 0
    子线程A运行 : 0
    子线程A运行 : 1
    子线程B运行 : 1
    子线程A运行 : 2
    子线程B运行 : 2
    子线程A运行 : 3
    子线程B运行 : 3
    子线程A运行 : 4
    子线程B运行 : 4
    A 线程运行结束!
    B 线程运行结束!
    main主线程运行结束!
  • 相关阅读:
    Python笔记2(数据类型)
    Python笔记1(作业)
    Python笔记1(内容编码)
    Linux内核分析——第三周学习笔记
    Linux内核分析——第二周学习笔记
    Linux内核分析——第一周学习笔记
    day19-三元表达式,函数递归
    day18-有参装饰器
    day17-无参装饰器
    day16-函数对象,函数嵌套,闭包函数
  • 原文地址:https://www.cnblogs.com/Kevin00/p/7895187.html
Copyright © 2011-2022 走看看