线程方法学习

该图片由enriquelopezgarre在Pixabay上发布

前言

本篇文章主要是学习Thread类中的方法的使用

正文

其中的方法分为实例方法与静态方法;

静态方法

  • currentThread()

获取当前执行线程的对象引用

  • yield()

提示调度程序,当前线程愿意放弃当前对处理器的使用。调度器可以忽略这个提示。放弃时间不定

  • sleep()

根据系统计时器和调度器的精度和准确性,使当前执行线程休眠(临时停火执行)指定的毫秒数。线程不会失去任何监视器的所有权。

实例方法

  • run()方法
    该方法是线程的具体执行的内容,通俗点讲就是线程要做些什么,都在run方法里面;这里需要注意的是,调用该实例方法只是普通的方法调用,并不是启动一个线程来执行;
1
2
3
4
5
6
7
8
9
10
11
12
13
14

public class ThreadDemoOne extends Thread {
    @Override
    public void run() {
        for (int i=0;i<3;i++){
            System.out.println("run="+Thread.currentThread().getName());
        }
    }
    public static void main(String[] args) {
        ThreadDemoOne threadDemoOne = new ThreadDemoOne();
        threadDemoOne.run();
    }
}

结果:

1
2
3
4
5

run=main
run=main
run=main

  • start()方法
    该方法是线程的启动方法,也就是会新启动一个线程来执行run方法里面得内容;
1
2
3
4
5
6
7
8
9
10
11
12
13
14

public class ThreadDemoOne extends Thread {
    @Override
    public void run() {
        for (int i=0;i<3;i++){
            System.out.println("run="+Thread.currentThread().getName());
        }
    }
    public static void main(String[] args) {
        ThreadDemoOne threadDemoOne = new ThreadDemoOne();
        threadDemoOne.start();
    }
}

结果:

1
2
3
4
5

run=Thread-0
run=Thread-0
run=Thread-0

  • interrupt()

中断线程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

public class ThreadDemoOne extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 50000; i++) {
            System.out.println("run=" + i + Thread.currentThread().getName());
        }
    }
    public static void main(String[] args) {
        ThreadDemoOne threadDemoOne = new ThreadDemoOne();
        threadDemoOne.start();
        threadDemoOne.interrupt();
        System.out.println("main===");
    }
}

结果:
run=49997Thread-0
run=49998Thread-0
run=49999Thread-0

实际上线程并没有中断,具在什么样的情况下可以中断,后面再讨论;

  • isInterrupted()

判断线程是否中断,具体后面讨论

  • isAlive()

测试该线程是否为活动线程。如果线程已经启动并且还没有死,那么它就是活的

  • setPriority()与getPriority()

设置和获取线程的优先级别

  • setName()与getName()

创建获取线程的名字

  • getThreadGroup()

返回该线程所属的线程组,如果此线程已死,此方法将返回null

  • join()

等待实例线程执行完后再执行当前线程所调用该方法后的内容

  • setDaemon()与isDaemon()

设置守护线程和是否为守护线程

  • checkAccess()

确定当前运行的线程是否具有修改此线程的权限

  • getId()

返回线程的标识符

  • getState()

获取线程的状态

坚持原创技术分享,您的支持将鼓励我继续创作!