Thread类的常用方法_获取线程名称的方法与Thread类的常用方法_设置线程名称的方法
Thread类的常用方法_获取线程名称的方法
线程创建
在上一天内容中我们已经可以完成最基本的线程开启,那么在我们完成操作过程中用到了java.lang.Thread类,API中该类中定义了有关线程的一些方法,具体如下∶
构造方法
public Thread():分配一个新的线程对象。 public Thread(String name):分配一个指定名字的新的线程对象。 public Thread(Runnable target) :分配一个带有指定目标新的线程对象。 public Thread(Runnable target ,String name) :分配一个带有指定目标新的线程对象并指定名字。
常用方法
public string getName()`:获取当前线程名称。 public void start() :导致此线程开始执行;Java虚拟机调用此线程的run方法。
public void run():此线程要执行的任务在此处定义代码。 public static void sleep(long millis) :使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。
public static Thread currentThread():返回对当前正在执行的线程对象的引用。
翻阅API后得知创建线程的方式总共有两种,一种是继承Thread类方式,一种是实现Runnable接口方式,方式一我们上一天已经完成,接下来讲解方式二实现的方式。
package Demo_MainThread; /* 获取线程的名称: 1.使用Thread类中的方法getName() string getName()返回该线钱程的名称。 2.可以先获取到当前正在执行的线程,使用线程中的方法getName()获取线程的名称 static Thread currentThread()返回对当前正在执行的线程对象的引用。 */ //定义一个Thread类的子类 public class Demo03_MyThread extends Thread { //重写Thread类中的run方法,设置线程任务 @Override public void run() { //获取线程名称 // String name =getName(); // System.out.println(name); // Thread t =Thread.currentThread(); // System.out.println(t); Thread[Thread-0,5,main] // String name = t.getName(); // System.out.println(name); //链式编程 System.out.println(Thread.currentThread().getName()); } }
package Demo_MainThread; /* 线程的名称 主线程:main 新线程:Thread-0,Thread-1,Thread-2 */ public class Demo01GetThreadName { public static void main(String[] args) { //创建Thread类的子对象 Demo03_MyThread thread = new Demo03_MyThread(); //调用start方法,开启新线程,执行run方法 thread.start(); new Demo03_MyThread().start(); new Demo03_MyThread().start(); //链式编程 System.out.println(Thread.currentThread().getName()); } }
Thread类的常用方法_设置线程名称的方法
package Demo_MainThread; /* 设置线程的名称:(了解) 1.使用Thread类中的方法setName(名字) void setName( String name)改变线程名称,使之与参数name相同。 2创建一个带参数的构造方法,参数传递线程的名称;调用父类的带参构造方法,把线程名称传递给父类,让父类(Thread)给子线程起一个名字 Thread(String name)分配新的Thread对象。 */ public class Demo04_MyThread extends Thread{ public Demo04_MyThread(){} public Demo04_MyThread(String name){ super(name);//把线程名称传递给父类,让父类(Thread)给子线程起一个名 } @Override public void run() { //获取线程的名称 System.out.println(Thread.currentThread().getName()); } }
package Demo_MainThread; public class Demo_04SetThreadName { public static void main(String[] args) { //开启多线程 Demo04_MyThread thread = new Demo04_MyThread(); thread.start(); thread.setName("小强"); //开启多线程 new Demo04_MyThread("马可波罗").start(); } }