Thread类的常用方法--设置线程名称的方法和Sleep方法

Thread类的常用方法--设置线程名称的方法

设置线程的名称:(了解)
1.使用Thread类中的方法setName(名字)
    void setName ( String name)改变线程名称,使之与参数name相同。
2.创建一个带参数的构造方法,参数传递线程的名称;调用父类的带参构造方法,把线程名称传递给父类,让父类(Thread)给子线程起一个名字
    Thread ( String name)分配新的 Thread 对象。

 

public class MyThread extends Thread{

    public MyThread(){}
    public MyThread(String name){
        super(name);
    }
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());

    }
public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.setName("乌拉");
        myThread.start();

        new MyThread("旺财哦").start();


    }

 

package thread;
 
public class Demo4_Thread {
 
    public static void main(String[] args) {
        
        new Thread() {
            public void run() {
                this.setName("线程A");
                System.out.println(this.getName() +": aaaaaa");
            }
        }.start();
        
        new Thread() {
            public void run() {
                this.setName("线程B");
                System.out.println(this.getName() +": bbbbb");
            }
        }.start();
    }
 
}

 

Thread类的常用方法--Sleep方法

public static void sleep(Long millis) ;使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行〉。毫秒数结束之后,线程继续执行

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();
        }
    }
//展示线程sleep的时候不释放synchronized的monitor,等sleep时间到了以后,
// 正常结束后才会释放锁
public class SleepDontReleaseMonitor implements Runnable{
    public static void main(String[] args) {
        SleepDontReleaseMonitor sdrm = new SleepDontReleaseMonitor();
        //开启两个线程
        new Thread(sdrm).start();
        new Thread(sdrm).start();
    }
    @Override
    public void run() {
        syn();
    }
    private synchronized void syn(){
        System.out.println("线程" +Thread.currentThread().getName()+"获取到monitor");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("线程" +Thread.currentThread().getName()+"退出同步代码块");
    }
}

 

posted @ 2022-07-07 14:42  漁夫  阅读(216)  评论(0)    收藏  举报