创建线程
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. */ }
为人:谦逊、激情、博学、审问、慎思、明辨、 笃行
学问:纸上得来终觉浅,绝知此事要躬行
为事:工欲善其事,必先利其器。
态度:道阻且长,行则将至;行而不辍,未来可期
.....................................................................
------- 桃之夭夭,灼灼其华。之子于归,宜其室家。 ---------------
------- 桃之夭夭,有蕡其实。之子于归,宜其家室。 ---------------
------- 桃之夭夭,其叶蓁蓁。之子于归,宜其家人。 ---------------
=====================================================================
* 博客文章部分截图及内容来自于学习的书本及相应培训课程以及网络其他博客,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。 * @author Alan -liu * @Email no008@foxmail.com
转载请标注出处! ✧*꧁一品堂.技术学习笔记꧂*✧. ---> https://www.cnblogs.com/ios9/
学问:纸上得来终觉浅,绝知此事要躬行
为事:工欲善其事,必先利其器。
态度:道阻且长,行则将至;行而不辍,未来可期
.....................................................................
------- 桃之夭夭,灼灼其华。之子于归,宜其室家。 ---------------
------- 桃之夭夭,有蕡其实。之子于归,宜其家室。 ---------------
------- 桃之夭夭,其叶蓁蓁。之子于归,宜其家人。 ---------------
=====================================================================
* 博客文章部分截图及内容来自于学习的书本及相应培训课程以及网络其他博客,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。 * @author Alan -liu * @Email no008@foxmail.com
转载请标注出处! ✧*꧁一品堂.技术学习笔记꧂*✧. ---> https://www.cnblogs.com/ios9/