java重启线程

	/**
	 * 重启线程
	 * @return
	 */
	public boolean restart() {
		if(getState() == Thread.State.NEW)
			start();
		else {
			try {
				stop();
				Field field = Thread.class.getDeclaredField("threadStatus");

				// 恢复线程初始状态
				Method method = Thread.class.getDeclaredMethod("init", ThreadGroup.class, Runnable.class, String.class, long.class,AccessControlContext.class); 
				method.setAccessible(true); 
				method.invoke(this, null, null, "Thread-" + this.getId(), 0, null); 
				field.setAccessible(true); 
				field.set(this, 0); 
				
				this.start();
			} catch(Exception e) {
				e.printStackTrace();
			}
		}
		return true;
	}
发布了117 篇原创文章 · 获赞 557 · 访问量 50万+

猜你喜欢

转载自blog.csdn.net/yuan1164345228/article/details/104823901