• 创建线程


    Thread.currentThread()

    package com.alanliu.Java8BasicCodeStuding.Java8BasciCode.Unit11_Thread.CreateThreadDemo;
    /**
     * 多线程 实现:
     * 
     * 1:基于主线程获取对其的引用。 Thread t = Thread.currentThread();
     * 2:implements 实现 Runnable 接口 
     * 3:extends 继承 Thread 类的方法。
     * 
     * Thread类的方法:
     * getName()   获取线程的名称
     * getPriority() 获取线程的优先级
     * isAlive()  确定线程是否仍然在运行
     * join()  等待线程终止
     * run()  线程的入口点
     * sleep() 挂起线程一段时间
     * start()  通过调用线程的run()方法启动线程。
     * 、
     * 
     * 
     * @author develop
     *
     */
    class CurrentThreadDemo  {
          public static void main(String args[]) {
            /**
             * 主线程:
             *   1:其重要2的因素:
             *      1-1:其他子线程都是从主线程产生的
             *      1-2:通常,主线程必须是最后才结束执行的线程。
             *  
             *    尽管主线程是在程序启动时自动创建的,但是可以通过Thread 对象对其进行控制。为此,
             *    必须调用currentThread()方法获取对主线程的一个引用。该方法是Thread的一个共有静态成员,它的一般形式如下:
             *    static Thread currentThread()            
             */
            Thread t = Thread.currentThread();
    
            System.out.println("Current thread: " + t);
    
            // change the name of the thread
            t.setName("My Thread");
            System.out.println("After name change: " + t);
    
            try {
              for(int n = 5; n > 0; n--) {
                System.out.println(n);
                Thread.sleep(1000);
              }
            } catch (InterruptedException e) {
              System.out.println("Main thread interrupted");
            }
          }
          /**
           * 运行结果:
           * Current thread: Thread[main,5,main]
                After name change: Thread[My Thread,5,main]
                5
                4
                3
                2
                1
           */
        }

    implements Runnable 

    package com.alanliu.Java8BasicCodeStuding.Java8BasciCode.Unit11_Thread.createThreadImplementsRunnable;
    
    /**
     *     
     * @ClassName:  NewThread   
     * @Description: 创建线程
     * 多线程 实现:
     * 
     * 1:基于主线程获取对其的引用。 Thread t = Thread.currentThread();
     * 2:implements 实现 Runnable 接口 
     * 3:extends 继承 Thread 类的方法。
     * 
     * Thread类的方法:
     * getName()   获取线程的名称
     * getPriority() 获取线程的优先级
     * isAlive()  确定线程是否仍然在运行
     * join()  等待线程终止
     * run()  线程的入口点
     * sleep() 挂起线程一段时间
     * start()  通过调用线程的run()方法启动线程。
     * 、*    
     * @author: Alan_liu
     * @date:   2022年3月3日 下午9:45:14      
     * @Copyright:
     */
    class NewThread implements Runnable {
         /**
          * 创建线程最简单方式是创建实现类 runnable接口的类。 runnable接口抽象类一个可以执行代码单元。
          * 可以依托任何实现类Runnable接口的对象来创建线程。为了实现runnable接口,类只需要实现run()方法,
          * 该方法声明如下:
          *   public void run();
          *   
          *   在 run() 方法内部,定义组成新线程的代码。run()方法代码可以调用其他方法,使用其他类,可以声明变量,
          *   就像main线程那样,
          *   唯一区别在于:run()方法为程序中另外一个并发线程的执行建立入口点。当run()方法返回时,这个线程将结束。
          *   在创建实现类runnable接口的类之后,可以在类中实例化Thread类型的对象。
          *   Thread类定义类几个构造函数。
          *   Thread(Runnable threadOb,String threadName)
          *   
          *    在这个构造类中,threadOb是实现类Runnable接口类的实例,这定义类从何处开始执行线程,新线程的名称由threadName指定。
          *    在创建类新线程后,只有调用线程的start()方法,线程才会运行,该方法是在Thread类中声明。
          *    在本质上,start() 方法执行对run()方法调用。
          *   
          */
          Thread t;
    
          NewThread() {
            // Create a new, second thread
            t = new Thread(this, "Demo Thread");
            System.out.println("Child thread: " + t);
            t.start(); // Start the thread
          }
    
          // This is the entry point for the second thread.
          public void run() {
            try {
              for(int i = 5; i > 0; i--) {
                System.out.println("Child Thread: " + i);
                Thread.sleep(500);
              }
            } catch (InterruptedException e) {
              System.out.println("Child interrupted.");
            }
            System.out.println("Exiting child thread.");
          }
        }
    
    
    
    
    package com.alanliu.Java8BasicCodeStuding.Java8BasciCode.Unit11_Thread.createThreadImplementsRunnable;
    
    /**
     * 
     * @ClassName:  ThreadDemo   
     * @Description: 调用 NewThread类进行测试线程运行情况。
     *   
     * @author: Alan_liu
     * @date:   2022年3月3日 下午10:06:13      
     * @Copyright:
     */
    class ThreadDemo {
          public static void main(String args[]) {
            new NewThread(); // create a new thread
    
            try {
              for(int i = 5; i > 0; i--) {
                System.out.println("Main Thread: " + i);
                Thread.sleep(1000);
              }
            } catch (InterruptedException e) {
              System.out.println("Main thread interrupted.");
            }
            System.out.println("Main thread exiting.");
          }
          /**
           *   在 NewThread 类中的构造函数中,通过下面这条语句创建类一个新的Thread对象。
           *   t = new Thread(this, "Demo Thread");
           *   传递this 作为第一个参数,以表明希望新线程调用this对象的run()方法。接下来调用start()方法,从run()方法开始启动
           *   线程的执行。这会导致执行子线程的for循环。调用完start()方法后,NewThread类的构造函数返回到main()方法。
           *   恢复主线程时,会进入主线程的for循环。两个线程继续执行。在单核系统中他们会共享CPU,直到他们的循环结束。
           * 
           * Child thread: Thread[Demo Thread,5,main]
                Main Thread: 5
                Child Thread: 5
                Child Thread: 4
                Main Thread: 4
                Child Thread: 3
                Child Thread: 2
                Main Thread: 3
                Child Thread: 1
                Exiting child thread.
                Main Thread: 2
                Main Thread: 1
                Main thread exiting.
    
           * 
           * 
           * 
           */
        }

    extends Thread

    package com.alanliu.Java8BasicCodeStuding.Java8BasciCode.Unit11_Thread.CreateThreadExtendsThread;
    
    /**
     * 
     * @ClassName:  NewThread   
     * @Description: 继承 Thread类方式 实现多线程
     * 多线程 实现:
     * 
     * 1:基于主线程获取对其的引用。 Thread t = Thread.currentThread();
     * 2:implements 实现 Runnable 接口 
     * 3:extends 继承 Thread 类的方法。
     * 
     * Thread类的方法:
     * getName()   获取线程的名称
     * getPriority() 获取线程的优先级
     * isAlive()  确定线程是否仍然在运行
     * join()  等待线程终止
     * run()  线程的入口点
     * sleep() 挂起线程一段时间
     * start()  通过调用线程的run()方法启动线程。   
     * @author: Alan_liu
     * @date:   2022年3月3日 下午10:19:21      
     * @Copyright:
     */
    class NewThread extends Thread {
         /**
          * 
          * @Title:  NewThread   
          * @Description:      
          * @param:    
          * @throws
          */
          NewThread() {
            // Create a new, second thread
            /**
             * 该程序产生的输出和其他版本不同。子线程是通过实例化NewThread类创建的。NewThread类派生自Thread.
             * 注意:在NewThread类中对super()方法的调用,这会调用一下形势的Thread构造函数。
             *   
             *   public Thread(String name) {
             *        this(null, null, name, 0);
             *    }
             *   
             *   name 指定类线程的名称
             */
            super("Demo Thread");
            System.out.println("Child thread: " + this);
            start(); // Start the thread
          }
          
          // This is the entry point for the second thread.
          /**
           * 创建线程的第二种方式是创建一个扩展类Thread的新类,然后创建该类的实例。
           * 扩展类必须重写run()方法,run()方法是新线程的入口点。扩展类还必须调用start()方法以开始新
           * 线程的执行。
           * <p>Title: run</p>   
           * <p>Description: </p>      
           * @see java.lang.Thread#run()
           */
          public void run() {
            try {
              for(int i = 5; i > 0; i--) {
                System.out.println("Child Thread: " + i);
                Thread.sleep(500);
              }
            } catch (InterruptedException e) {
              System.out.println("Child interrupted.");
            }
            System.out.println("Exiting child thread.");
          }
        }
    
    
    
    package com.alanliu.Java8BasicCodeStuding.Java8BasciCode.Unit11_Thread.CreateThreadExtendsThread;
    
    /**
     * 
     * @ClassName:  ExtendThread   
     * @Description:TODO(描述这个类的作用)   
     * @author: Alan_liu
     * @date:   2022年3月3日 下午10:43:18      
     * @Copyright:
     */
    class ExtendThread {
          public static void main(String args[]) {
            new NewThread(); // create a new thread
    
            try {
              for(int i = 5; i > 0; i--) {
                System.out.println("Main Thread: " + i);
                Thread.sleep(1000);
              }
            } catch (InterruptedException e) {
              System.out.println("Main thread interrupted.");
            }
            System.out.println("Main thread exiting.");
          }
          /**
           * 
           * 运行结果:
           * 
           * Child thread: Thread[Demo Thread,5,main]
            Main Thread: 5
            Child Thread: 5
            Child Thread: 4
            Main Thread: 4
            Child Thread: 3
            Child Thread: 2
            Main Thread: 3
            Child Thread: 1
            Exiting child thread.
            Main Thread: 2
            Main Thread: 1
            Main thread exiting.
    
           */
        }

  • 相关阅读:
    mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案
    WebAPI 用户认证防篡改实现HMAC(二)签名验证 AbsBaseAuthenticationAttribute--转
    Calling a Web API From a .NET Client (C#)
    http状态码有那些?分别代表是什么意思
    html 之表单,div标签等。。。。。。。
    mysql之视图,触发器,事务等。。。
    pymysql模块
    MySQL之IDE工具介绍及数据备份
    mysql老是停止运行该怎么解决
    前端基础之html
  • 原文地址:https://www.cnblogs.com/ios9/p/15962025.html
Copyright © 2020-2023  润新知