java多线程(下)

发布于:2023-01-06 ⋅ 阅读:(404) ⋅ 点赞:(0)

获取当前线程对象、获取线程对象名字、修改线程对象名字

方法名 作用
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秒
  1. 静态方法:Thread.sleep(1000);
  2. 参数是毫秒
  3. 作用: 让当前线程进入休眠,进入“阻塞状态”,放弃占有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)
  • 最低优先级1
  • 默认优先级是5
  • 最高优先级10
  • 最高优先级10

优先级比较高的获取CPU时间片可能会多一些

线程插队:

方法名 作用
void join() 将一个线程合并到当前线程中,当前线程受阻塞,加入的线程执行直到结束

线程让步:

方法名 作用
static void yield() 让位方法,当前线程暂停,回到就绪状态,让给其它线程。

synchronized-线程同步

线程同步机制的语法是:

synchronized(){
	// 线程同步代码块。
}