zoukankan      html  css  js  c++  java
  • Java如何中断正在运行的线程?

    在Java编程中,如何中断正在运行的线程?

    以下示例演示如何使用Thread类的interrupt()方法中断正在运行线程,并检查线程是否使用isInterrupted()方法中断。

    package com.yiibai;
    
    public class InterruptThread extends Object implements Runnable {
        public void run() {
            try {
                System.out.println("in run() - about to work2()");
                work2();
                System.out.println("in run() - back from work2()");
            } catch (InterruptedException x) {
                System.out.println("in run() - interrupted in work2()");
                return;
            }
            System.out.println("in run() - doing stuff after nap");
            System.out.println("in run() - leaving normally");
        }
    
        public void work2() throws InterruptedException {
            while (true) {
                if (Thread.currentThread().isInterrupted()) {
                    System.out.println("C isInterrupted()=" + Thread.currentThread().isInterrupted());
                    Thread.sleep(2000);
                    System.out.println("D isInterrupted()=" + Thread.currentThread().isInterrupted());
                }
            }
        }
    
        public void work() throws InterruptedException {
            while (true) {
                for (int i = 0; i < 100000; i++) {
                    int j = i * 2;
                }
                System.out.println("A isInterrupted()=" + Thread.currentThread().isInterrupted());
                if (Thread.interrupted()) {
                    System.out.println("B isInterrupted()=" + Thread.currentThread().isInterrupted());
                    throw new InterruptedException();
                }
            }
        }
    
        public static void main(String[] args) {
            InterruptThread si = new InterruptThread();
            Thread t = new Thread(si);
            t.start();
            try {
                Thread.sleep(2000);
            } catch (InterruptedException x) {
            }
    
            System.out.println("in main() - interrupting other thread");
            t.interrupt();
            System.out.println("in main() - leaving");
        }
    }
    
    Java

    上述代码示例将产生以下结果 -

    in run() - about to work2()
    in main() - interrupting other thread
    in main() - leaving
    C isInterrupted()=true
    in run() - interrupted in work2()
  • 相关阅读:
    DButils工具类能够用来获取数据库连接向数据库插入更新删除对象
    Android 实现ActionBar定制
    查看CentOs6.5/7的系统版本号
    安装Was liberty之步骤
    在centOS上安装VNC
    SCP远程拷贝命令
    Was liberty资料总结
    罗杰斯:做你喜欢的工作,你会变成个有钱人
    【Java/csv】一个CSV文件解析类(转载)
    当你的才华还撑不起你的野心时,那你就应该静下心来学习。
  • 原文地址:https://www.cnblogs.com/borter/p/9613461.html
Copyright © 2011-2022 走看看