Java--Thread类常用方法介绍

Thread类常用方法

Thread对象调用:

序号 方法 方法描述
1 pubic void start() 使该线程开始执行;Java虚拟机调用该线程的run方法
2 public void run() 如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。
3 public final void setName(String name) 改变线程名称,使之与参数 name 相同。
4 public final void setPriority(int priority) 更改线程的优先级
5 public final void setDaemon(boolean on) 将该线程标记为守护线程或用户线程。
6 public final void join(long millisec) 调用线程等待被调用线程完成后,才能继续用下运行。参数为最多等待多少毫秒
7 public void interrupt() 中断线程
8 public final boolean isAlive() 测试线程是否处于活动状态。

Thread类调用:

序号 方法 方法描述
1 public static void yield() 暂停当前正在执行的线程对象,并执行其他线程。
2 public static boolean holdsLock(Object x) 当且仅当当前线程在指定的对象上保持监视器锁时,才返回 true。
3 public static void sleep(long millisec) 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。
4 public staticThread currentThread() 返回对当前正在执行的线程对象的引用。
5 public static void dumpStack() 将当前线程的堆栈跟踪打印至标准错误流。

示例:

package pers.zhang.thread;

/**
 * @author zhang
 * @date 2020/1/15 - 0:36
 */
public class GuessANumber extends Thread {

    private int number;

    public GuessANumber(int number) {
        this.number = number;
    }

    public void run() {
        int counter = 0;
        int guess = 0;
        do {
            guess = (int) (Math.random() * 100 + 1);
            System.out.println(this.getName() + " guesses " + guess);
            counter++;
        } while(guess != number);
        System.out.println("** Correct!" + this.getName() + "in" + counter + "guesses.**");
    }
}
package pers.zhang.thread;

/**
 * @author zhang
 * @date 2020/1/15 - 0:35
 */
public class DisplayMessage implements Runnable {

    private String message;

    public DisplayMessage(String message) {
        this.message = message;
    }

    @Override
    public void run() {
        while(true) {
            System.out.println(message);
        }
    }
}
package pers.zhang.thread;

/**
 * @author zhang
 * @date 2020/1/15 - 0:37
 */
public class ThreadClassDemo {

    public static void main(String [] args) {
        Runnable hello = new DisplayMessage("Hello");
        Thread thread1 = new Thread(hello);
        thread1.setDaemon(true);
        thread1.setName("hello");
        System.out.println("Starting hello thread...");
        thread1.start();

        Runnable bye = new DisplayMessage("Goodbye");
        Thread thread2 = new Thread(bye);
        thread2.setPriority(Thread.MIN_PRIORITY);
        thread2.setDaemon(true);
        System.out.println("Starting goodbye thread...");
        thread2.start();

        System.out.println("Starting thread3...");
        Thread thread3 = new GuessANumber(27);
        thread3.start();
        try {
            thread3.join();
        }catch(InterruptedException e) {
            System.out.println("Thread interrupted.");
        }
        System.out.println("Starting thread4...");
        Thread thread4 = new GuessANumber(75);

        thread4.start();
        System.out.println("main() is ending...");
    }
}

输出每次都不同:

Starting hello thread...
Starting goodbye thread...
Hello
Hello
Hello
Hello
Hello
Hello
Goodbye
Goodbye
Goodbye
Goodbye
Goodbye
.......
发布了595 篇原创文章 · 获赞 1818 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/cold___play/article/details/103982011