/**PageBeginHtml Block Begin **/ /***自定义返回顶部小火箭***/ /*生成博客目录的JS 开始*/ /*生成博客目录的JS 结束*/

创建线程

 

 

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.

       */
    }

 

 

 

 

 

 

 

 

 


 

posted @ 2022-03-03 21:44  一品堂.技术学习笔记  阅读(70)  评论(0编辑  收藏  举报