Thread 类的方法
# Thread 类的方法
讲讲常用的方法。
构造方法:
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()
:返回对当前正在执行的线程对象
# 获取名字
我们演示一下获取 name。先创建一个 Tread 类的子类:
package chapter200Thread;
/**
* 演示获取线程的名称
*/
public class MyThread2 extends Thread{
@Override
public void run() {
// 获取线程名称
System.out.println(getName());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
开启新线程并执行:
package chapter200Thread;
public class Demo03GetThreadName {
public static void main(String[] args) {
MyThread2 myThread2 = new MyThread2();
myThread2.start();
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
运行结果:
Thread-0
1
我们的主线程的名字是 main,新创建的线程名字则是 Thread-0,再创建一个则是 Thread-1... 以此类推:
package chapter200Thread;
public class Demo03GetThreadName {
public static void main(String[] args) {
MyThread2 myThread2 = new MyThread2();
myThread2.start();
new MyThread2().start();
new MyThread2().start();
new MyThread2().start();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
运行结果:
Thread-1
Thread-2
Thread-3
Thread-0
1
2
3
4
2
3
4
还可以获取当前线程,然后输出其名字:
package chapter200Thread;
/**
* 演示获取线程的名称
*/
public class MyThread2 extends Thread{
@Override
public void run() {
// 获取线程名称
//System.out.println(getName());
System.out.println(Thread.currentThread().getName());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
运行结果和刚刚也是一样的。
# 设置线程名称
有两种方式:
- 使用 Thead 类中的 setName 方法
- 创建线程时,就传递线程的名称
package chapter200Thread;
/**
* 设置线程名称
*/
public class MyThread3 extends Thread{
public MyThread3() {
}
public MyThread3(String name) {
super(name);
}
@Override
public void run() {
// 获取线程的名称
System.out.println(Thread.currentThread().getName());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
启动多线程:
package chapter200Thread;
public class Demo04SetThreadName {
public static void main(String[] args) {
MyThread3 mt = new MyThread3();
mt.setName("小强");
mt.start();
new MyThread3("旺财").start();
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
结果:
旺财
小强
1
2
2
# 暂停线程
可以用 sleep 方法:
package chapter200Thread;
public class Demo05Sleep {
public static void main(String[] args) {
//模拟秒表
for (int i = 1; i <=60 ; i++) {
System.out.println(i);
//使用Thread类的sleep方法让程序睡眠1秒钟
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
运行结果:每隔一秒输出一个数字。
1
2
3
4
5
.....
1
2
3
4
5
6
2
3
4
5
6
(完)
上次更新: 2024/10/1 19:22:42