Java并发编程实例--3.打断一个线程

本文通过一个具体的Java程序示例介绍了如何使用线程打断机制来终止正在运行的线程。程序创建了一个名为PrimeGenerator的线程,该线程会不断寻找并打印素数,5秒后主线程会调用interrupt()方法来尝试打断该线程。
一般来讲一个java程序如果运行着多个线程,那么只有在这些线程都运行完毕后才会终止。
但有时候,我们需要去结束某个线程或者取消某个任务。此时就用到了Java线程的打断机制,即interruption。

本例中,我们将开发一个程序创建线程,5秒后将强制打断它。


PrimeGenerator.java


package com.dylan.thread.ch1.c03;

/**
 * @author xusucheng
 * @create 2018-04-22
 **/
public class PrimeGenerator extends Thread {
    @Override
    public void run() {
        long number = 1L;
        while (true){
            if(isPrime(number)){
                System.out.printf("Number %d is Prime.\n", number);
            }
            //判断是否被打断
            if(isInterrupted()){
                System.out.printf("The Prime Generator has been Interrupted");
                return;
            }
            number++;
        }
    }

    private boolean isPrime(long number){
        if(number<2){
            return true;
        }
        for (long i=2;i<number;i++){
            if((number%i)==0){
                return false;
            }
        }

        return true;
    }


}

Main.java

package com.dylan.thread.ch1.c03;

/**
 * @author xusucheng
 * @create 2018-04-22
 **/
public class Main {
    public static void main(String[] args) {
        Thread task = new PrimeGenerator();
        task.start();
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        task.interrupt();
    }
}


输出:

Number 1 is Prime.
Number 2 is Prime.
Number 3 is Prime.
Number 5 is Prime.

......

Number 82007 is Prime.
Number 82009 is Prime.
Number 82013 is Prime.
The Prime Generator has been Interrupted


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值