欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 多线程(三)—— 线程的生命周期及方法

程序员文章站 2024-02-03 11:08:46
这篇博客介绍线程的生命周期。 线程是一个动态执行的过程,它也有从创建到死亡的过程。 线程的几种状态 在 Thread 类中,有一个枚举内部类: 上面的信息以图片表示如下: 第一张图: 第二张图:把等待、计时等待、阻塞看成阻塞一个状态了 1、新建状态(new):使用 new 创建一个线程,仅仅只是在堆 ......

sleep() 和 yield() 方法的区别:

  ①、都能使当前处于运行状态的线程放弃 cpu资源,把运行的机会给其他线程

  ②、sleep 方法会给其他线程运行的机会,但是不考虑其他线程优先级的问题;yield 方法会优先给更高优先级的线程运行机会

  ③、调用 sleep 方法后,线程进入计时等待状态,调用 yield 方法后,线程进入就绪状态。

 

join示例:

public class testthread1 {
    public static void main(string [] args){
        subthread1 subthread1=new subthread1();
        subthread1.start();
        for (int i=0;i<=100;i++){ 
           system.out.println(thread.currentthread().getname()+":"+i);
           if(i==20){
                try {
                    subthread1.join();
                } catch (interruptedexception e) {
                    e.printstacktrace();
                }
            }
        }
    }
}

class subthread1 extends thread{
    @override
    public void run(){
        for (int i=0;i<=100;i++){
            try {
                thread.currentthread().sleep(100);
            } catch (interruptedexception e) {
                e.printstacktrace();
            }
            system.out.println(thread.currentthread().getname()+":"+i);
        }
    }
}

运行结果:

main:0
main:1
main:2
main:3
main:4
main:5
main:6
main:7
main:8
main:9
main:10
thread-0:0
thread-0:1
thread-0:2
thread-0:3
thread-0:4
thread-0:5
thread-0:6
thread-0:7
thread-0:8
thread-0:9
thread-0:10
.
.
.
thread-0:99
thread-0:100
main:11
main:12
main:13
main:14
main:15
.
.
main:98
main:99
main:100

运行结果分析:在main线程中调用线程a的join()方法,此时main线程停止执行,直至a线程执行完毕,main线程再接着join()之后的代码执行