⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myappthread.java

📁 java concurrency in practice 源码. JAVA并发设计
💻 JAVA
字号:
package net.jcip.examples;import java.util.concurrent.atomic.*;import java.util.logging.*;/** * MyAppThread * <p/> * Custom thread base class * * @author Brian Goetz and Tim Peierls */public class MyAppThread extends Thread {    public static final String DEFAULT_NAME = "MyAppThread";    private static volatile boolean debugLifecycle = false;    private static final AtomicInteger created = new AtomicInteger();    private static final AtomicInteger alive = new AtomicInteger();    private static final Logger log = Logger.getAnonymousLogger();    public MyAppThread(Runnable r) {        this(r, DEFAULT_NAME);    }    public MyAppThread(Runnable runnable, String name) {        super(runnable, name + "-" + created.incrementAndGet());        setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {            public void uncaughtException(Thread t,                                          Throwable e) {                log.log(Level.SEVERE,                        "UNCAUGHT in thread " + t.getName(), e);            }        });    }    public void run() {        // Copy debug flag to ensure consistent value throughout.        boolean debug = debugLifecycle;        if (debug) log.log(Level.FINE, "Created " + getName());        try {            alive.incrementAndGet();            super.run();        } finally {            alive.decrementAndGet();            if (debug) log.log(Level.FINE, "Exiting " + getName());        }    }    public static int getThreadsCreated() {        return created.get();    }    public static int getThreadsAlive() {        return alive.get();    }    public static boolean getDebug() {        return debugLifecycle;    }    public static void setDebug(boolean b) {        debugLifecycle = b;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -