类java.lang.Thread.UncaughtExceptionHandler源码实例Demo

下面列出了怎么用java.lang.Thread.UncaughtExceptionHandler的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Augendiagnose   文件: Application.java
/**
 * Define custom ExceptionHandler which takes action on OutOfMemoryError.
 */
private void setExceptionHandler() {
	final UncaughtExceptionHandler defaultExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();

	UncaughtExceptionHandler customExceptionHandler =
			new UncaughtExceptionHandler() {
				@Override
				public void uncaughtException(final Thread thread, final Throwable ex) {
					if (ex instanceof OutOfMemoryError) {
						// Store info about OutOfMemoryError
						PreferenceUtil.setSharedPreferenceBoolean(R.string.key_internal_outofmemoryerror, true);
					}

					// re-throw critical exception further to the os
					defaultExceptionHandler.uncaughtException(thread, ex);
				}
			};

	Thread.setDefaultUncaughtExceptionHandler(customExceptionHandler);
}
 
源代码2 项目: pumpernickel   文件: VectorImage.java
private void writeObject(java.io.ObjectOutputStream out)
		throws IOException {
	out.writeInt(0);
	out.writeObject(operations.toArray(new Operation[operations.size()]));
	out.writeInt(operations.getTimeoutSeconds());

	ArrayListener<Operation>[] arrayListeners = operations
			.getArrayListeners();
	ChangeListener[] changeListeners = operations.getChangeListeners();
	ListListener<Operation>[] listListeners = operations.getListListeners();

	nullifyUnserializable(arrayListeners);
	nullifyUnserializable(changeListeners);
	nullifyUnserializable(listListeners);

	out.writeObject(arrayListeners);
	out.writeObject(changeListeners);
	out.writeObject(listListeners);

	UncaughtExceptionHandler ueh = operations
			.getListenerUncaughtExceptionHandler();
	if (!(ueh instanceof Serializable))
		ueh = null;

	out.writeObject(ueh);
}
 
源代码3 项目: x-pipe   文件: StandaloneStatMonitor.java
@SuppressWarnings("static-access")
@Override
public void run() {
	Thread.currentThread().setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
		@Override
		public void uncaughtException(Thread arg0, Throwable arg1) {
			logger.error("[error]{}:{}",slaveRedis.getIp(), slaveRedis.getPort(), arg1);
			Cat.logError(arg1);
			redisStatCheckResult.put(slaveRedis, Boolean.FALSE);
			if (null != slave) {
				slave.close();
			}
		}
	});

	logger.debug("[Psubscribe]{}:{}", slaveRedis.getIp(), slaveRedis.getPort());
	slave.psubscribe(new JedisPubSub() {
		@Override
		public void onPMessage(String pattern, String channel, String msg) {
			logger.debug("[OnPMessage]{}:{}", slaveRedis.getIp(), slaveRedis.getPort());
			redisStatCheckResult.put(slaveRedis, Boolean.TRUE);
		}
	}, generateURL(masterRedis.getIp(), masterRedis.getPort()));
}
 
源代码4 项目: sakai   文件: ThreadedJaasAuthenticateTest.java
public void testThreads() throws InterruptedException {
	UncaughtExceptionHandler handler = Thread.currentThread().getUncaughtExceptionHandler();
	Thread[] threads = new Thread[threadCount];
	Random rnd = new Random();
	for (int i = 0; i < threadCount ; i++) {
		String name;
		if (rnd.nextBoolean()) {
			name = "Thread-"+ i+ "-good";
			threads[i] = new Thread(new Authenticate(goodUser, goodPass, true), name);
		} else {
			name = "Thread-"+ i+ "-bad";
			threads[i] = new Thread(new Authenticate(badUser, badPass, false), name);
		}
		threads[i].setUncaughtExceptionHandler(handler);
		threads[i].start();
		log.info("Started "+ name);
	}
	for (Thread thread: threads) {
		thread.join();
	}
}
 
@Override
public Statement apply(Statement s, Description d) {
  return new StatementAdapter(s) {
    @Override
    protected void before() throws Throwable {
      if (!applied.getAndSet(true)) {
        UncaughtExceptionHandler p = Thread.getDefaultUncaughtExceptionHandler();
        try {
          // Try to initialize a zookeeper class that reinitializes default exception handler.
          Class<?> cl = NIOServerCnxnFactory.class;
          // Make sure static initializers have been called.
          Class.forName(cl.getName(), true, cl.getClassLoader());
        } finally {
          if (p == Thread.getDefaultUncaughtExceptionHandler()) {
          //  throw new RuntimeException("Zookeeper no longer resets default thread handler.");
          }
          Thread.setDefaultUncaughtExceptionHandler(p);
        }
      }
    }
  };
}
 
源代码6 项目: neoscada   文件: BufferingStorageDao.java
protected synchronized void startWriter ()
{
    if ( this.disposed )
    {
        logger.warn ( "We are disposed. Not starting writer" );
        return;
    }

    this.writerThread = new Thread ( "BufferingStorageDao" ) {
        @Override
        public void run ()
        {
            writer ();
        }
    };
    this.writerThread.start ();
    this.writerThread.setUncaughtExceptionHandler ( new UncaughtExceptionHandler () {

        @Override
        public void uncaughtException ( final Thread t, final Throwable e )
        {
            logger.error ( "Writer thread failed. Restarting ...", e );
            startWriter ();
        }
    } );
}
 
源代码7 项目: j2objc   文件: ThreadTest.java
/**
 * java.lang.Thread#getUncaughtExceptionHandler
 * java.lang.Thread#setUncaughtExceptionHandler
 */
public void test_get_setUncaughtExceptionHandler() {
    class Handler implements UncaughtExceptionHandler {
        public void uncaughtException(Thread thread, Throwable ex) {
        }
    }

    final Handler handler = new Handler();
    Thread.currentThread().setUncaughtExceptionHandler(handler);
    assertSame(handler, Thread.currentThread().getUncaughtExceptionHandler());

    Thread.currentThread().setUncaughtExceptionHandler(null);

    //TODO add security-based tests
}
 
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
  synchronized (list) {
    for (UncaughtExceptionHandler handler : list) {
      handler.uncaughtException(thread, throwable);
    }
  }
}
 
源代码9 项目: pumpernickel   文件: ObservableList.java
private ObservableList(List<T> data, ListenerManager<T> listenerManager,
		AtomicInteger modCount,
		UncaughtExceptionHandler uncaughtExceptionHandler,
		boolean allowAnyModification) {
	Objects.requireNonNull(data);
	Objects.requireNonNull(listenerManager);
	Objects.requireNonNull(modCount);
	this.data = data;
	this.listenerManager = listenerManager;
	this.modCount = modCount;
	this.allowAnyModification = allowAnyModification;
	setListenerUncaughtExceptionHandler(uncaughtExceptionHandler);
}
 
源代码10 项目: Javacord   文件: ExceptionLoggerDelegateImpl.java
@Override
public UncaughtExceptionHandler getUncaughtExceptionHandler() {
    return (thread, throwable) -> logger.error(
            "Caught unhandled exception on thread '{}'!",
            thread.getName(),
            ExceptionLoggerDelegate.unwrapThrowable(throwable));
}
 
源代码11 项目: openjdk-8   文件: ForkJoinPool.java
/**
 * Creates a {@code ForkJoinPool} with the given parameters, without
 * any security checks or parameter validation.  Invoked directly by
 * makeCommonPool.
 */
private ForkJoinPool(int parallelism,
                     ForkJoinWorkerThreadFactory factory,
                     UncaughtExceptionHandler handler,
                     int mode,
                     String workerNamePrefix) {
    this.workerNamePrefix = workerNamePrefix;
    this.factory = factory;
    this.ueh = handler;
    this.mode = (short)mode;
    this.parallelism = (short)parallelism;
    long np = (long)(-parallelism); // offset ctl counts
    this.ctl = ((np << AC_SHIFT) & AC_MASK) | ((np << TC_SHIFT) & TC_MASK);
}
 
源代码12 项目: jdk1.8-source-analysis   文件: ForkJoinPool.java
/**
 * Creates a {@code ForkJoinPool} with the given parameters, without
 * any security checks or parameter validation.  Invoked directly by
 * makeCommonPool.
 */
private ForkJoinPool(int parallelism,
                     ForkJoinWorkerThreadFactory factory,
                     UncaughtExceptionHandler handler,
                     int mode,
                     String workerNamePrefix) {
    this.workerNamePrefix = workerNamePrefix;
    this.factory = factory;
    this.ueh = handler;
    this.config = (parallelism & SMASK) | mode;
    long np = (long)(-parallelism); // offset ctl counts
    this.ctl = ((np << AC_SHIFT) & AC_MASK) | ((np << TC_SHIFT) & TC_MASK);
}
 
源代码13 项目: openjdk-jdk8u-backup   文件: ForkJoinPool.java
/**
 * Callback from ForkJoinWorkerThread constructor to establish and
 * record its WorkQueue.
 *
 * @param wt the worker thread
 * @return the worker's queue
 */
final WorkQueue registerWorker(ForkJoinWorkerThread wt) {
    UncaughtExceptionHandler handler;
    wt.setDaemon(true);                           // configure thread
    if ((handler = ueh) != null)
        wt.setUncaughtExceptionHandler(handler);
    WorkQueue w = new WorkQueue(this, wt);
    int i = 0;                                    // assign a pool index
    int mode = config & MODE_MASK;
    int rs = lockRunState();
    try {
        WorkQueue[] ws; int n;                    // skip if no array
        if ((ws = workQueues) != null && (n = ws.length) > 0) {
            int s = indexSeed += SEED_INCREMENT;  // unlikely to collide
            int m = n - 1;
            i = ((s << 1) | 1) & m;               // odd-numbered indices
            if (ws[i] != null) {                  // collision
                int probes = 0;                   // step by approx half n
                int step = (n <= 4) ? 2 : ((n >>> 1) & EVENMASK) + 2;
                while (ws[i = (i + step) & m] != null) {
                    if (++probes >= n) {
                        workQueues = ws = Arrays.copyOf(ws, n <<= 1);
                        m = n - 1;
                        probes = 0;
                    }
                }
            }
            w.hint = s;                           // use as random seed
            w.config = i | mode;
            w.scanState = i;                      // publication fence
            ws[i] = w;
        }
    } finally {
        unlockRunState(rs, rs & ~RSLOCK);
    }
    wt.setName(workerNamePrefix.concat(Integer.toString(i >>> 1)));
    return w;
}
 
源代码14 项目: bugsnag-java   文件: ExceptionHandler.java
static void disable(Bugsnag bugsnag) {
    // Find the Bugsnag ExceptionHandler
    UncaughtExceptionHandler currentHandler = Thread.getDefaultUncaughtExceptionHandler();
    if (currentHandler instanceof ExceptionHandler) {
        // Unsubscribe this bugsnag from uncaught exceptions
        ExceptionHandler bugsnagHandler = (ExceptionHandler) currentHandler;
        bugsnagHandler.clientMap.remove(bugsnag);

        // Remove the Bugsnag ExceptionHandler if no clients are subscribed
        if (bugsnagHandler.clientMap.size() == 0) {
            Thread.setDefaultUncaughtExceptionHandler(bugsnagHandler.originalHandler);
        }
    }
}
 
源代码15 项目: jdk8u-jdk   文件: ForkJoinPool.java
/**
 * Creates and returns the common pool, respecting user settings
 * specified via system properties.
 */
private static ForkJoinPool makeCommonPool() {
    int parallelism = -1;
    ForkJoinWorkerThreadFactory factory = null;
    UncaughtExceptionHandler handler = null;
    try {  // ignore exceptions in accessing/parsing properties
        String pp = System.getProperty
            ("java.util.concurrent.ForkJoinPool.common.parallelism");
        String fp = System.getProperty
            ("java.util.concurrent.ForkJoinPool.common.threadFactory");
        String hp = System.getProperty
            ("java.util.concurrent.ForkJoinPool.common.exceptionHandler");
        if (pp != null)
            parallelism = Integer.parseInt(pp);
        if (fp != null)
            factory = ((ForkJoinWorkerThreadFactory)ClassLoader.
                       getSystemClassLoader().loadClass(fp).newInstance());
        if (hp != null)
            handler = ((UncaughtExceptionHandler)ClassLoader.
                       getSystemClassLoader().loadClass(hp).newInstance());
    } catch (Exception ignore) {
    }
    if (factory == null) {
        if (System.getSecurityManager() == null)
            factory = defaultForkJoinWorkerThreadFactory;
        else // use security-managed default
            factory = new InnocuousForkJoinWorkerThreadFactory();
    }
    if (parallelism < 0 && // default 1 less than #cores
        (parallelism = Runtime.getRuntime().availableProcessors() - 1) <= 0)
        parallelism = 1;
    if (parallelism > MAX_CAP)
        parallelism = MAX_CAP;
    return new ForkJoinPool(parallelism, factory, handler, LIFO_QUEUE,
                            "ForkJoinPool.commonPool-worker-");
}
 
源代码16 项目: dragonwell8_jdk   文件: ForkJoinPool.java
/**
 * Callback from ForkJoinWorkerThread constructor to establish and
 * record its WorkQueue.
 *
 * @param wt the worker thread
 * @return the worker's queue
 */
final WorkQueue registerWorker(ForkJoinWorkerThread wt) {
    UncaughtExceptionHandler handler;
    wt.setDaemon(true);                           // configure thread
    if ((handler = ueh) != null)
        wt.setUncaughtExceptionHandler(handler);
    WorkQueue w = new WorkQueue(this, wt);
    int i = 0;                                    // assign a pool index
    int mode = config & MODE_MASK;
    int rs = lockRunState();
    try {
        WorkQueue[] ws; int n;                    // skip if no array
        if ((ws = workQueues) != null && (n = ws.length) > 0) {
            int s = indexSeed += SEED_INCREMENT;  // unlikely to collide
            int m = n - 1;
            i = ((s << 1) | 1) & m;               // odd-numbered indices
            if (ws[i] != null) {                  // collision
                int probes = 0;                   // step by approx half n
                int step = (n <= 4) ? 2 : ((n >>> 1) & EVENMASK) + 2;
                while (ws[i = (i + step) & m] != null) {
                    if (++probes >= n) {
                        workQueues = ws = Arrays.copyOf(ws, n <<= 1);
                        m = n - 1;
                        probes = 0;
                    }
                }
            }
            w.hint = s;                           // use as random seed
            w.config = i | mode;
            w.scanState = i;                      // publication fence
            ws[i] = w;
        }
    } finally {
        unlockRunState(rs, rs & ~RSLOCK);
    }
    wt.setName(workerNamePrefix.concat(Integer.toString(i >>> 1)));
    return w;
}
 
源代码17 项目: Java8CN   文件: ForkJoinPool.java
/**
 * Creates and returns the common pool, respecting user settings
 * specified via system properties.
 */
private static ForkJoinPool makeCommonPool() {
    int parallelism = -1;
    ForkJoinWorkerThreadFactory factory = null;
    UncaughtExceptionHandler handler = null;
    try {  // ignore exceptions in accessing/parsing properties
        String pp = System.getProperty
            ("java.util.concurrent.ForkJoinPool.common.parallelism");
        String fp = System.getProperty
            ("java.util.concurrent.ForkJoinPool.common.threadFactory");
        String hp = System.getProperty
            ("java.util.concurrent.ForkJoinPool.common.exceptionHandler");
        if (pp != null)
            parallelism = Integer.parseInt(pp);
        if (fp != null)
            factory = ((ForkJoinWorkerThreadFactory)ClassLoader.
                       getSystemClassLoader().loadClass(fp).newInstance());
        if (hp != null)
            handler = ((UncaughtExceptionHandler)ClassLoader.
                       getSystemClassLoader().loadClass(hp).newInstance());
    } catch (Exception ignore) {
    }
    if (factory == null) {
        if (System.getSecurityManager() == null)
            factory = defaultForkJoinWorkerThreadFactory;
        else // use security-managed default
            factory = new InnocuousForkJoinWorkerThreadFactory();
    }
    if (parallelism < 0 && // default 1 less than #cores
        (parallelism = Runtime.getRuntime().availableProcessors() - 1) <= 0)
        parallelism = 1;
    if (parallelism > MAX_CAP)
        parallelism = MAX_CAP;
    return new ForkJoinPool(parallelism, factory, handler, LIFO_QUEUE,
                            "ForkJoinPool.commonPool-worker-");
}
 
源代码18 项目: metrics-kafka   文件: ThreadFactoryBuilder.java
private static ThreadFactory build(ThreadFactoryBuilder builder) {
	final String nameFormat = builder.nameFormat;
	final Boolean daemon = builder.daemon;
	final Integer priority = builder.priority;
	final UncaughtExceptionHandler uncaughtExceptionHandler = builder.uncaughtExceptionHandler;
	final ThreadFactory backingThreadFactory = (builder.backingThreadFactory != null) ? builder.backingThreadFactory
			: Executors.defaultThreadFactory();
	final AtomicLong count = (nameFormat != null) ? new AtomicLong(0) : null;
	return new ThreadFactory() {
		@Override
		public Thread newThread(Runnable runnable) {
			Thread thread = backingThreadFactory.newThread(runnable);
			if (nameFormat != null) {
				thread.setName(String.format(nameFormat, count.getAndIncrement()));
			}
			if (daemon != null) {
				thread.setDaemon(daemon);
			}
			if (priority != null) {
				thread.setPriority(priority);
			}
			if (uncaughtExceptionHandler != null) {
				thread.setUncaughtExceptionHandler(uncaughtExceptionHandler);
			}
			return thread;
		}
	};
}
 
源代码19 项目: openjdk-8-source   文件: ForkJoinPool.java
/**
 * Creates and returns the common pool, respecting user settings
 * specified via system properties.
 */
private static ForkJoinPool makeCommonPool() {
    int parallelism = -1;
    ForkJoinWorkerThreadFactory factory = null;
    UncaughtExceptionHandler handler = null;
    try {  // ignore exceptions in accessing/parsing properties
        String pp = System.getProperty
            ("java.util.concurrent.ForkJoinPool.common.parallelism");
        String fp = System.getProperty
            ("java.util.concurrent.ForkJoinPool.common.threadFactory");
        String hp = System.getProperty
            ("java.util.concurrent.ForkJoinPool.common.exceptionHandler");
        if (pp != null)
            parallelism = Integer.parseInt(pp);
        if (fp != null)
            factory = ((ForkJoinWorkerThreadFactory)ClassLoader.
                       getSystemClassLoader().loadClass(fp).newInstance());
        if (hp != null)
            handler = ((UncaughtExceptionHandler)ClassLoader.
                       getSystemClassLoader().loadClass(hp).newInstance());
    } catch (Exception ignore) {
    }
    if (factory == null) {
        if (System.getSecurityManager() == null)
            factory = defaultForkJoinWorkerThreadFactory;
        else // use security-managed default
            factory = new InnocuousForkJoinWorkerThreadFactory();
    }
    if (parallelism < 0 && // default 1 less than #cores
        (parallelism = Runtime.getRuntime().availableProcessors() - 1) <= 0)
        parallelism = 1;
    if (parallelism > MAX_CAP)
        parallelism = MAX_CAP;
    return new ForkJoinPool(parallelism, factory, handler, LIFO_QUEUE,
                            "ForkJoinPool.commonPool-worker-");
}
 
源代码20 项目: openjdk-8-source   文件: ForkJoinPool.java
/**
 * Callback from ForkJoinWorkerThread to establish and record its
 * WorkQueue. To avoid scanning bias due to packing entries in
 * front of the workQueues array, we treat the array as a simple
 * power-of-two hash table using per-thread seed as hash,
 * expanding as needed.
 *
 * @param wt the worker thread
 * @return the worker's queue
 */
final WorkQueue registerWorker(ForkJoinWorkerThread wt) {
    UncaughtExceptionHandler handler; WorkQueue[] ws; int s, ps;
    wt.setDaemon(true);
    if ((handler = ueh) != null)
        wt.setUncaughtExceptionHandler(handler);
    do {} while (!U.compareAndSwapInt(this, INDEXSEED, s = indexSeed,
                                      s += SEED_INCREMENT) ||
                 s == 0); // skip 0
    WorkQueue w = new WorkQueue(this, wt, mode, s);
    if (((ps = plock) & PL_LOCK) != 0 ||
        !U.compareAndSwapInt(this, PLOCK, ps, ps += PL_LOCK))
        ps = acquirePlock();
    int nps = (ps & SHUTDOWN) | ((ps + PL_LOCK) & ~SHUTDOWN);
    try {
        if ((ws = workQueues) != null) {    // skip if shutting down
            int n = ws.length, m = n - 1;
            int r = (s << 1) | 1;           // use odd-numbered indices
            if (ws[r &= m] != null) {       // collision
                int probes = 0;             // step by approx half size
                int step = (n <= 4) ? 2 : ((n >>> 1) & EVENMASK) + 2;
                while (ws[r = (r + step) & m] != null) {
                    if (++probes >= n) {
                        workQueues = ws = Arrays.copyOf(ws, n <<= 1);
                        m = n - 1;
                        probes = 0;
                    }
                }
            }
            w.poolIndex = (short)r;
            w.eventCount = r; // volatile write orders
            ws[r] = w;
        }
    } finally {
        if (!U.compareAndSwapInt(this, PLOCK, ps, nps))
            releasePlock(nps);
    }
    wt.setName(workerNamePrefix.concat(Integer.toString(w.poolIndex >>> 1)));
    return w;
}
 
源代码21 项目: TencentKona-8   文件: ForkJoinPool.java
/**
 * Callback from ForkJoinWorkerThread constructor to establish and
 * record its WorkQueue.
 *
 * @param wt the worker thread
 * @return the worker's queue
 */
final WorkQueue registerWorker(ForkJoinWorkerThread wt) {
    UncaughtExceptionHandler handler;
    wt.setDaemon(true);                           // configure thread
    if ((handler = ueh) != null)
        wt.setUncaughtExceptionHandler(handler);
    WorkQueue w = new WorkQueue(this, wt);
    int i = 0;                                    // assign a pool index
    int mode = config & MODE_MASK;
    int rs = lockRunState();
    try {
        WorkQueue[] ws; int n;                    // skip if no array
        if ((ws = workQueues) != null && (n = ws.length) > 0) {
            int s = indexSeed += SEED_INCREMENT;  // unlikely to collide
            int m = n - 1;
            i = ((s << 1) | 1) & m;               // odd-numbered indices
            if (ws[i] != null) {                  // collision
                int probes = 0;                   // step by approx half n
                int step = (n <= 4) ? 2 : ((n >>> 1) & EVENMASK) + 2;
                while (ws[i = (i + step) & m] != null) {
                    if (++probes >= n) {
                        workQueues = ws = Arrays.copyOf(ws, n <<= 1);
                        m = n - 1;
                        probes = 0;
                    }
                }
            }
            w.hint = s;                           // use as random seed
            w.config = i | mode;
            w.scanState = i;                      // publication fence
            ws[i] = w;
        }
    } finally {
        unlockRunState(rs, rs & ~RSLOCK);
    }
    wt.setName(workerNamePrefix.concat(Integer.toString(i >>> 1)));
    return w;
}
 
源代码22 项目: j2objc   文件: ThreadTest.java
/**
 * java.lang.Thread#getDefaultUncaughtExceptionHandler
 * java.lang.Thread#setDefaultUncaughtExceptionHandler
 */
public void test_get_setDefaultUncaughtExceptionHandler() {
    class Handler implements UncaughtExceptionHandler {
        public void uncaughtException(Thread thread, Throwable ex) {
        }
    }

    final Handler handler = new Handler();
    Thread.setDefaultUncaughtExceptionHandler(handler);
    assertSame(handler, Thread.getDefaultUncaughtExceptionHandler());

    Thread.setDefaultUncaughtExceptionHandler(null);
    assertNull(Thread.getDefaultUncaughtExceptionHandler());
    //TODO add security-based tests
}
 
源代码23 项目: HubBasics   文件: ThreadFactoryBuilder.java
public ThreadFactoryBuilder setUncaughtExceptionHandler(UncaughtExceptionHandler uncaughtExceptionHandler) {
    if (null == uncaughtExceptionHandler) {
        throw new NullPointerException("UncaughtExceptionHandler cannot be null");
    }
    this.uncaughtExceptionHandler = uncaughtExceptionHandler;
    return this;
}
 
源代码24 项目: akarnokd-misc   文件: HookThrowing.java
@Before
public void before() {
    RxJavaPlugins.setErrorHandler(ex -> {
        UncaughtExceptionHandler h = Thread.currentThread().getUncaughtExceptionHandler();
        Thread.currentThread().setUncaughtExceptionHandler((t, e) -> {
            Thread.currentThread().setUncaughtExceptionHandler(h);
            HookThrowing.sneakyThrow(ex);
        });
        throw new RuntimeException("Fail up");
    });
}
 
源代码25 项目: hottub   文件: ForkJoinPool.java
/**
 * Creates and returns the common pool, respecting user settings
 * specified via system properties.
 */
private static ForkJoinPool makeCommonPool() {
    int parallelism = -1;
    ForkJoinWorkerThreadFactory factory = null;
    UncaughtExceptionHandler handler = null;
    try {  // ignore exceptions in accessing/parsing properties
        String pp = System.getProperty
            ("java.util.concurrent.ForkJoinPool.common.parallelism");
        String fp = System.getProperty
            ("java.util.concurrent.ForkJoinPool.common.threadFactory");
        String hp = System.getProperty
            ("java.util.concurrent.ForkJoinPool.common.exceptionHandler");
        if (pp != null)
            parallelism = Integer.parseInt(pp);
        if (fp != null)
            factory = ((ForkJoinWorkerThreadFactory)ClassLoader.
                       getSystemClassLoader().loadClass(fp).newInstance());
        if (hp != null)
            handler = ((UncaughtExceptionHandler)ClassLoader.
                       getSystemClassLoader().loadClass(hp).newInstance());
    } catch (Exception ignore) {
    }
    if (factory == null) {
        if (System.getSecurityManager() == null)
            factory = defaultForkJoinWorkerThreadFactory;
        else // use security-managed default
            factory = new InnocuousForkJoinWorkerThreadFactory();
    }
    if (parallelism < 0 && // default 1 less than #cores
        (parallelism = Runtime.getRuntime().availableProcessors() - 1) <= 0)
        parallelism = 1;
    if (parallelism > MAX_CAP)
        parallelism = MAX_CAP;
    return new ForkJoinPool(parallelism, factory, handler, LIFO_QUEUE,
                            "ForkJoinPool.commonPool-worker-");
}
 
源代码26 项目: hawkular-agent   文件: ThreadFactoryGenerator.java
public static final ThreadFactory generateFactory(boolean daemon, String threadGroupName) {
    String namePattern = "%G-%t";
    UncaughtExceptionHandler uncaughtExceptionHandler = null;
    Integer initialPriority = null;
    Long stackSize = null;
    return new JBossThreadFactory(
            new ThreadGroup(threadGroupName),
            daemon,
            initialPriority,
            namePattern,
            uncaughtExceptionHandler,
            stackSize,
            null); // this last param is ignored according to docs.
    // see: https://github.com/jbossas/jboss-threads/blob/2.2/src/main/java/org/jboss/threads/JBossThreadFactory.java#L90
}
 
源代码27 项目: hbase   文件: Threads.java
/**
 * Utility method that sets name, daemon status and starts passed thread.
 * @param t thread to frob
 * @param name new name
 * @param handler A handler to set on the thread. Pass null if want to use default handler.
 * @return Returns the passed Thread <code>t</code>.
 */
public static <T extends Thread> T setDaemonThreadRunning(T t, String name,
    UncaughtExceptionHandler handler) {
  t.setName(name);
  if (handler != null) {
    t.setUncaughtExceptionHandler(handler);
  }
  t.setDaemon(true);
  t.start();
  return t;
}
 
@Before
public void setUpException() {
    Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(Thread t, Throwable e) {
            error = e;
        }
    });
}
 
源代码29 项目: jdk8u-dev-jdk   文件: ForkJoinPool.java
/**
 * Callback from ForkJoinWorkerThread constructor to establish and
 * record its WorkQueue.
 *
 * @param wt the worker thread
 * @return the worker's queue
 */
final WorkQueue registerWorker(ForkJoinWorkerThread wt) {
    UncaughtExceptionHandler handler;
    wt.setDaemon(true);                           // configure thread
    if ((handler = ueh) != null)
        wt.setUncaughtExceptionHandler(handler);
    WorkQueue w = new WorkQueue(this, wt);
    int i = 0;                                    // assign a pool index
    int mode = config & MODE_MASK;
    int rs = lockRunState();
    try {
        WorkQueue[] ws; int n;                    // skip if no array
        if ((ws = workQueues) != null && (n = ws.length) > 0) {
            int s = indexSeed += SEED_INCREMENT;  // unlikely to collide
            int m = n - 1;
            i = ((s << 1) | 1) & m;               // odd-numbered indices
            if (ws[i] != null) {                  // collision
                int probes = 0;                   // step by approx half n
                int step = (n <= 4) ? 2 : ((n >>> 1) & EVENMASK) + 2;
                while (ws[i = (i + step) & m] != null) {
                    if (++probes >= n) {
                        workQueues = ws = Arrays.copyOf(ws, n <<= 1);
                        m = n - 1;
                        probes = 0;
                    }
                }
            }
            w.hint = s;                           // use as random seed
            w.config = i | mode;
            w.scanState = i;                      // publication fence
            ws[i] = w;
        }
    } finally {
        unlockRunState(rs, rs & ~RSLOCK);
    }
    wt.setName(workerNamePrefix.concat(Integer.toString(i >>> 1)));
    return w;
}
 
源代码30 项目: JDKSourceCode1.8   文件: ForkJoinPool.java
/**
 * Callback from ForkJoinWorkerThread constructor to establish and
 * record its WorkQueue.
 *
 * @param wt the worker thread
 * @return the worker's queue
 */
final WorkQueue registerWorker(ForkJoinWorkerThread wt) {
    UncaughtExceptionHandler handler;
    wt.setDaemon(true);                           // configure thread
    if ((handler = ueh) != null)
        wt.setUncaughtExceptionHandler(handler);
    WorkQueue w = new WorkQueue(this, wt);
    int i = 0;                                    // assign a pool index
    int mode = config & MODE_MASK;
    int rs = lockRunState();
    try {
        WorkQueue[] ws; int n;                    // skip if no array
        if ((ws = workQueues) != null && (n = ws.length) > 0) {
            int s = indexSeed += SEED_INCREMENT;  // unlikely to collide
            int m = n - 1;
            i = ((s << 1) | 1) & m;               // odd-numbered indices
            if (ws[i] != null) {                  // collision
                int probes = 0;                   // step by approx half n
                int step = (n <= 4) ? 2 : ((n >>> 1) & EVENMASK) + 2;
                while (ws[i = (i + step) & m] != null) {
                    if (++probes >= n) {
                        workQueues = ws = Arrays.copyOf(ws, n <<= 1);
                        m = n - 1;
                        probes = 0;
                    }
                }
            }
            w.hint = s;                           // use as random seed
            w.config = i | mode;
            w.scanState = i;                      // publication fence
            ws[i] = w;
        }
    } finally {
        unlockRunState(rs, rs & ~RSLOCK);
    }
    wt.setName(workerNamePrefix.concat(Integer.toString(i >>> 1)));
    return w;
}
 
 类所在包
 同包方法