Java 线程

2019-05-08  本文已影响0人  黑白_a9aa

中断

Thread中的interrupt()方法示例代码

package test;

import java.util.logging.Logger;

public class Test {
    private static final Logger log = Logger.getLogger(Test.class.getName());
    
    public static void main(String[] args) {
        Thread t = new Test().startThread("[Sub Thread]");
        try {
            t.sleep(30);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        
        log.info("thread " + Thread.currentThread().getName() + " send interrupt flag.");
        
        t.interrupt();
    }
    
    public Thread startThread(String tname) {
        Thread t = new Thread(new Runnable() {

            @Override
            public void run() {
                int sum = 0;
                int i = 0;
                log.info("thread " + Thread.currentThread().getName() + " i is " + i);
                log.info("thread " + Thread.currentThread().getName() + " sum is " + sum);
                while(!Thread.currentThread().isInterrupted()) {
                    log.info("thread " + Thread.currentThread().getName() + " is running.");
                    while(sum<i*1000) {
                        sum++;
                    }
                    
                    i++;
                    if(i > 100) {
                        log.info("thread " + Thread.currentThread().getName() + " is finished.");
                        break;
                    }
                }
                log.info("thread " + Thread.currentThread().getName() + " is stopped.");
                log.info("thread " + Thread.currentThread().getName() + " i is " + i);
                log.info("thread " + Thread.currentThread().getName() + " sum is " + sum);
            }
            
        }, tname);
        t.start();
        return t;
    }
    
}
上一篇 下一篇

猜你喜欢

热点阅读