Thread 类的有关方法(1)
-
启动线程,并执行对象的 run() 方法:
void start()
-
线程在被调度时执行的操作:
run()
-
返回线程的名称:
String getName()
-
设置该线程名称:
void setName(String name)
-
返回当前线程:
static currentThread()
测试类
public class Test {
public static void main(String[] args) {
// 创建实现类对象
Runnable run0 = new RunDemo();
Runnable run1 = new RunDemo();
// 创建线程对象
Thread t0 = new Thread(run0);
Thread t1 = new Thread(run1,"t-1");// 这里创建的线程对象,并设置线程名称
// setName() 设置线程名称
t0.setName("t-0");
// start() 启动线程
t0.start();
t1.start();
// getName() 获取线程名称,如果创建线程时没有指定名称,系统会给出默认名称,
System.out.println(t0.getName());
System.out.println(t1.getName());
// currentThread() 返回当前线程
Thread thread0 = t0.currentThread();
}
}
实现类
public class RunDemo implements Runnable{
int count = 0;
@Override
// run() 被调度时执行的操作
public void run() {
System.out.println("Runnable 多线程 " + Thread.currentThread().getName() + " 运行的代码");
for (int i = 0; i < 5; i++) {
System.out.println("这是 Runnable 多线程 " + Thread.currentThread().getName() + " 的逻辑代码:" + i);
}
}
}
Thread 类的有关方法(2)
-
线程让步:
- 暂停当前正在执行的线程,把执行机会让给优先级相同或者更高的线程
- 若队列中没有同优先级的线程,则忽略此方法
static void yield()
-
当某个程序执行流中调用其他线程的 join() 方法时,调用线程将被阻塞,直到 join() 方法加入的 join 线程执行完毕为止
- 低优先级的线程也可以获得执行
join()
-
指定时间:毫秒
- 令当前活动线程在指定时间段内放弃对 CPU 控制,是其他线程有机会被执行,时间到后重排队。
- 需要抛出 InterruptedException 异常
static void sleep(long millis)
-
强制线程生命周期结束
stop()
-
判断线程是否还活着(返回 boolean 值):
boolean isAlive()
测试类
public class Test {
public static void main(String[] args) {
// 创建实现类对象
Runnable run0 = new RunDemo();
Runnable run1 = new RunDemo();
// 创建线程对象
Thread t0 = new Thread(run0);
t0.setName("t-0");
Thread t1 = new Thread(run1,"t-1");// 这里创建的线程对象,并设置线程名称
t0.start();
t1.start();
// isAlive() 判断当前线程是否存活
System.out.println(t1.isAlive());
System.out.println(1);
try {
// stop() 强制线程生命周期结束,相当于强制停止此线程
t1.stop();
// join() 阻塞,这里相当于阻塞当前的 main 方法,需要先执行完 join 进来的线程代码,才可以继续执行
t0.join();// 可以理解为将 t0 的 run 中的代码插入到这个位置执行
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(2);
//这里返回的是 false,因为上面 t1 的生命周期被结束了
System.out.println(t1.isAlive());
}
}
实现类
public class RunDemo implements Runnable{
@Override
public void run() {
System.out.println("Runnable 多线程 " + Thread.currentThread().getName() + " 运行的代码");
for (int i = 0; i < 5; i++) {
try {
// sleep(1000) 当前的线程睡眠 1000 毫秒,相当于 1s
Thread.sleep(1000);// 当前这个循环每 1000 毫秒执行一次
} catch (InterruptedException e) {
e.printStackTrace();
}
// yield() 线程让步
Thread.yield();
System.out.println("这是 Runnable 多线程 " + Thread.currentThread().getName() + " 的逻辑代码:" + i);
}
}
}