Java中Thread中的常用方法

Posted 巧克力爱王子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中Thread中的常用方法相关的知识,希望对你有一定的参考价值。

测试Thread中常用的方法:

1、start():启动当前线程;调用当前线程的run();

2、run():通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中;

3、currentThread():静态方法,返回执行当前代码的线程;

4、getname():获取当前线程的名字;

5、setname():设置当前线程的名字;

6、yield():释放当前cpu的执行权;

(此时需要注意cpu释放该线程后不一定会被其他线程占用,也可能又分给该线程)

7、join():在线程a中调用线程b的join(),此时线程a就进入阻塞状态,直到线程b完全执行完以后,线程a才结束阻塞状态。

8、stop():已过时,当执行此方法时,强制结束当前线程;(看看就行/偷笑)

9、sleep(long millitime):让当前线程“睡眠”指定的millitime(毫秒),在指定的millitime毫秒时间内,当前线程是阻塞的。

10、isAlive():判断当前线程是否存活。

//用实现Runnable接口的方法创建第一个线程
class MyTreadMthods implements Runnable{

//    run():通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中;
    @Override
    public void run() {

        for (int i = 0; i < 30; i++) {//输出0~7中7的倍数

            if (i % 7 == 0){//getname():获取当前线程的名字;

//  sleep(long millitime):让当前线程“睡眠”指定的millitime(毫秒)
// ,在指定的millitime毫秒时间内,当前线程是阻塞的。
                try {
                    Thread.currentThread().sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName() + ":" + i);
            }
//            if (i > 21){
//                //释放当前cpu的执行权;
//                Thread.currentThread().yield();
//            }
        }
    }
}

//用实现Runnable接口的方法创建第二个线程
class MyTreadMthods1 implements Runnable{

    @Override
    public void run() {

        for (int i = 0; i < 30; i++) {//输出0~7中7的倍数

            if (i % 7 == 0){//getname():获取当前线程的名字


                System.out.println(Thread.currentThread().getName() + ":" + i);

            }
        }
    }
}

public class ThreadMthods {

    public static void main(String[] args) {
        MyTreadMthods mthods = new MyTreadMthods();
        MyTreadMthods1 mthods1 = new MyTreadMthods1();

        Thread thread = new Thread(mthods);
        Thread thread1 = new Thread(mthods1);

        //setname():设置当前线程的名字;
        thread1.setName("线程一");

        //start():启动当前线程;调用当前线程的run();
        thread.start();

//        thread1.start();

        for (int i = 0; i < 30; i++) {//输出0~7中7的倍数

            if (i % 7 == 0){//getname():获取当前线程的名字;
                System.out.println(Thread.currentThread().getName() + ":" + i);
            }
            
//         join():在线程a中调用线程b的join(),此时线程a就进入阻塞状态,
//         直到线程b完全执行完以后,线程a才结束阻塞状态。
            if(i == 14){
                try {
                    thread.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

//      isAlive():判断当前线程是否存活。
        System.out.println(thread.isAlive());
    }
}

 此为输出结果,运行时,当main线程到14时,Thread-0线程每隔一秒出现一个,join()方法运行后,main线程阻塞,直到Thread-0线程运行完成,所以最后判断Thread-0是否存活时是:false

main:0
main:7
main:14
Thread-0:0
Thread-0:7
Thread-0:14
Thread-0:21
Thread-0:28
main:21
main:28
false

Process finished with exit code 0

 

以上是关于Java中Thread中的常用方法的主要内容,如果未能解决你的问题,请参考以下文章

JAVA学习笔记线程的生命周期及Thread类常用方法

java基础——线程的常用方法和线程生命周期

Java多线程中joinyieldsleep方法详解

Java多线程Thread常用方法

Java:多线程

java线程