获取当前线程对象、获取线程对象名字、修改线程对象名字
方法名 |
作用 |
static Thread currentThread() |
获取当前线程对象 |
String getName() |
获取线程对象名字 |
void setName(String name) |
修改线程对象名字 |
当线程没有设置名字的时候,默认的名字是什么?
- Thread-0
- Thread-1
- Thread-2
class MyThread2 extends Thread {
public void run(){
for(int i = 0; i < 100; i++){
Thread currentThread = Thread.currentThread();
System.out.println(currentThread.getName() + "-->" + i);
//System.out.println(super.getName() + "-->" + i);
//System.out.println(this.getName() + "-->" + i);
}
}
}
8、关于线程的sleep方法
方法名 |
作用 |
static void sleep(long millis) |
让当前线程休眠millis秒 |
- 静态方法:Thread.sleep(1000);
- 参数是毫秒
- 作用: 让当前线程进入休眠,进入“
阻塞状态
”,放弃占有CPU时间片,让给其它线程使用。
这行代码出现在A线程中,A线程就会进入休眠。
这行代码出现在B线程中,B线程就会进入休眠。
public class ThreadTest06 {
public static void main(String[] args) {
//每打印一个数字睡1s
for(int i = 0; i < 10; i++){
System.out.println(Thread.currentThread().getName() + "--->" + i);
// 睡眠1秒
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
线程优先级:
方法名 |
作用 |
int getPriority() |
获得线程优先级 |
void setPriority(int newPriority) |
设置线程优先级 |
常量:
常量名 |
备注 |
static int MAX_PRIORITY |
最高优先级(10) |
static int MIN_PRIORITY |
最低优先级(1) |
static int NORM_PRIORITY |
默认优先级(5) |
优先级比较高的获取CPU时间片可能会多一些
线程插队:
方法名 |
作用 |
void join() |
将一个线程合并到当前线程中,当前线程受阻塞,加入的线程执行直到结束 |
线程让步:
方法名 |
作用 |
static void yield() |
让位方法,当前线程暂停,回到就绪状态,让给其它线程。 |
synchronized-线程同步
线程同步机制的语法是:
synchronized(){
// 线程同步代码块。
}