Java多线程:(2)使用isAlive()和join()

使用isAlive()和join判断线程是否已结束,让主线程最后结束。

package study;

class NewThread implements Runnable{
    String name;
    Thread t;

    NewThread(String threadname){
        this.name = threadname;
        t = new Thread(this, name);
        System.out.println("New Thread:" + t);
        startThread();
    }

    public void startThread(){
        this.t.start();
    }

    public boolean CheckIsThreadAlive(){
        boolean isAlive = t.isAlive();
        System.out.println(name + "is Alive:" + isAlive);
        return isAlive;
    }

    @Override
    public void run() {
        try {
            for (int i = 5; i > 0; i--){
                System.out.println(name + ": " + i);
                Thread.sleep(100);
            }
        }
        catch (InterruptedException e){
            System.out.println(name + "Interrupted");
        }
        System.out.println(name + " exiting.");
    }
}

public class test01 {
    public static void main(String[] args){
        System.out.println("Program Start:");

        NewThread t1 = new NewThread("One");
        NewThread t2 = new NewThread("Two");
        NewThread t3 = new NewThread("Three");

        t1.CheckIsThreadAlive();
        t2.CheckIsThreadAlive();
        t3.CheckIsThreadAlive();

        try{
            System.out.println("Waiting for threads to finish.");
            t1.t.join();
            t2.t.join();
            t3.t.join();
        }
        catch (InterruptedException e){
            System.out.println("Main thread Interrupted");
        }

        t1.CheckIsThreadAlive();
        t2.CheckIsThreadAlive();
        t3.CheckIsThreadAlive();

        System.out.println(("Exiting Main thread."));
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java多线程的源码非常庞大,涉及到很多的类和接口,这里简要介绍一下Java多线程的核心类和接口。 1. Thread类 Thread类是Java多线程的核心类,它表示一个线程。Thread类的源码非常庞大,主要包含以下几个方法: - start():启动线程 - run():线程执行的代码 - sleep():使线程睡眠一段时间 - yield():暂停当前线程,让出CPU执行权 - join():等待线程执行完毕 - interrupt():中断线程 - isAlive():判断线程是否还活着 2. Runnable接口 Runnable接口表示一个线程执行的代码块,它只有一个run()方法。在Java中,一个线程可以通过实现Runnable接口来指定执行的代码。例如: ```java public class MyRunnable implements Runnable { public void run() { // 线程执行的代码 } } ``` 3. Callable接口 Callable接口也表示一个线程执行的代码块,它比Runnable接口更强大,可以返回一个值。在Java中,一个线程可以通过实现Callable接口来指定执行的代码,并返回一个值。例如: ```java public class MyCallable implements Callable<Integer> { public Integer call() throws Exception { // 线程执行的代码 return 0; } } ``` 4. Executor接口 Executor接口表示一个异步执行的任务,它把任务和执行器分离开来,使得任务可以独立于执行器进行测试和开发。Executor接口提供了一些方法来执行任务,例如: - execute(Runnable command):执行一个Runnable任务 - submit(Callable task):执行一个Callable任务,并返回一个Future对象 5. ExecutorService接口 ExecutorService接口继承自Executor接口,它提供了一些扩展的方法来管理和控制执行器。例如: - shutdown():关闭执行器 - submit(Runnable task):执行一个Runnable任务,并返回一个Future对象 - submit(Callable task):执行一个Callable任务,并返回一个Future对象 6. Future接口 Future接口表示一个异步执行的任务的结果。它提供了一些方法来查询任务是否已经完成、获取任务的结果等。例如: - isDone():判断任务是否已经完成 - get():获取任务的结果 以上是Java多线程的一些核心类和接口,它们构成了Java多线程的基础框架。除此之外,Java还提供了许多其他的类和接口,例如Lock、Condition、Semaphore等,用于实现更加高级的多线程功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kerven_HKW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值