API中java.lang.Thread类定义了有关线程的一些方法,具体如下:
构造方法:
public Thread():分配一个新的线程对象。
public Thread(String name):分配一个指定名字的新的线程对象。
public Thread(Runable target):分配一个带有制定目标新的线程对象。
public Thread(Runable target,String name):分配一个带有指定目标新的线程对象并指定名字。
常用方法:
1.public String getName():获取当前线程名称。
// 定义一个Thread子类
public class MyThread2 extends Thread{
// 重写Thread类中的run方法,设置线程任务
@Override
public void run() {
// super.run();
// 获取线程名称
System.out.println(getName());
}
}
/*
线程名称:
主线程:main
新线程:Thread-0,Thread-1,Thread-2
*/
public class Demo11ThreadName {
public static void main(String[] args) {
// 创建一个Thread子类对象
MyThread2 mt = new MyThread2();
// 调用start方法开启新线程,执行run方法
mt.start();
// 匿名类
new MyThread2().start();
}
}
运行截图:

2.public static Thread currentThread():返回对当前正在执行的线程对象的引用。
然后可以用线程中的方法getName来获取线程的名称
@Override
public void run() {
// 返回对当前正在执行的线程对象的引用
// 返回值:线程
Thread td = Thread.currentThread();
System.out.println(td);
String name = td.getName();
System.out.println(name);
}
public static void main(String[] args) {
// 创建一个Thread子类对象
MyThread2 mt = new MyThread2();
// 调用start方法开启新线程,执行run方法
mt.start();
// 匿名类
new MyThread2().start();
}
运行截图:

// 获取主线程的名称 // 只有这一个方法,因为主方法所在的类并没有继承Thread类 // 不能直接调用属于Thread类的getName方法 // 而是调用Thread类的静态方法获取当前线程的以用,然后用线程的getName方法获取名称 Thread.currentThread().getName();

3.public void setName():设置线程名称。
/*
设置线程的名称(两种方式):
1.使用Thread类中的方法setName(名字)
2.创建一个带有参数的构造方式,参数传递线程的名称;调用父类的带参构造方法,
把线程名称传递给父类i,让父类(Thread)给子类起一个名字。
注意区分,被赋值线程对象地址值的变量名(对象名)并不是线程的名称
*/
public class MyThread3 extends Thread{
// 重写run方法
@Override
public void run() {
//super.run();
// 获取当前线程名称
System.out.println(Thread.currentThread().getName());
}
public MyThread3() {
}
public MyThread3(String name) {
// 调用父类的带参构造方法,
//把线程名称传递给父类
super(name);
}
}
public static void main(String[] args) {
// 开启多线程
MyThread3 mt = new MyThread3();
// 给线程设置名称
mt.setName("线程1");
// 调用start方法开启新线程,执行run方法
mt.start();
// 多线程
MyThread3 mt1 = new MyThread3("线程2");
mt1.start();
}
运行截图:

注意区分:被赋值线程对象的地址值的变量名(对象名)并不是该线程的名称!
4.public void start():导致此线程程开始执行;Java虚拟机调用此线程的run方法。
5.public void run():此线程要执行的任务在此处定义代码。
6.public static void sleep(long millies):使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。
public static void main(String[] args) {
// 模拟秒表
for (int i = 1; i < 60; i++) {
System.out.println(i);
// 一秒钟打印一次
// 使用Thread类的静态方法sleep(long millies)方法
// 让程序睡眠指定毫秒数*1000
// 有异常,要么throws声明异常,交给JVM,要么try-catch捕捉异常,自行处理
// 此处使用try-catch捕捉
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
本文介绍了Java中线程的基础知识,包括Thread类的构造方法及常用方法如getName(), currentThread(), setName(), start() 和 run()等。同时展示了如何通过不同方式为线程命名,并提供了线程名称获取与设置的具体示例。
261

被折叠的 条评论
为什么被折叠?



