Thread常用方法实验
Thread常用方法:
(1)Thread.currentThread().getName() 得到当前线程名
(2)public final void setName(String name) 设置线程名字
(3)public static void sleep(long millis)throws InterruptedException 线程休眠,毫秒
(4)public static void yield() 放弃本次机会
(5)public final void join(long millis)throws InterruptedException 等待线程终止
(1)Thread.currentThread().getName() 得到当前线程名
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName());
}
结果:main
这是一个主线程
public class MyThread extends Thread {
public static void main(String[] args) {
MyThread t1 = new MyThread();
t1.start();
}
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + "——" +i);
}
}
}
结果:
Thread-0——0
Thread-0——1
Thread-0——2
Thread-0——3
Thread-0——4
Thread-0这是默认的线程名
(2)public final void setName(String name) 设置线程名字
也可以通过Thread类的构造方法设置名字
public Thread(String name)
public class MyThread extends Thread {
public static void main(String[] args) {
MyThread t1 = new MyThread();
t1.setName("线程一");
t1.start();
}
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + "——" +i);
}
}
}
结果:
线程一——0
线程一——1
线程一——2
线程一——3
线程一——4
这里就是我们所设置的线程名字
(3)public static void sleep(long millis)throws InterruptedException 线程休眠,毫秒
休眠就好像是睡觉
休眠1秒就是线程要1秒后再继续执行
public class MyThread extends Thread {
public static void main(String[] args) {
MyThread t1 = new MyThread();
t1.setName("线程一");
t1.start();
}
@Override
public void run() {
for (int i = 0; i < 5; i++) {
try {
//每循环一次,线程休眠1秒再执行
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "——" +i);
}
}
}
(4)public static void yield() 放弃本次机会(注意:它虽然放弃了本次机会,但下一次机会还有可能是它)
观察以下代码结果(多执行几次)
public class ThreadYield extends Thread {
@Override
public void run() {
for (int i = 0; i < 50; i++) {
System.out.println("yield----"+i);
}
}
}
public class Test {
public static void main(String[] args) {
ThreadYield t = new ThreadYield();
t.start();
for (int i = 0; i < 50; i++) {
if (i == 3) {
Thread.yield();
}
System.out.println("main----"+i);
}
}
}
(5)public final void join(long millis)throws InterruptedException 等待线程终止(自己优先执行,不是一定优先执行,只是机会大一些)
public class ThreadJion extends Thread {
@Override
public void run() {
for (int i = 0; i < 50; i++) {
System.out.println("join-----"+i);
}
}
}
public class Test {
public static void main(String[] args) {
ThreadJion t = new ThreadJion();
t.start();
for (int i = 0; i < 50; i++) {
if (i == 3) {
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("main-----"+i);
}
}
}