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

📄 shutdownexample.java

📁 这是一个关于JSP网页开发的,我一般用JBUILDER开发,别的不知道
💻 JAVA
字号:
//5.3.3
public ShutdownExample extends HttpServlet
{
	private int serviceCounter = 0;
	private Boolean shuttingDown;
	...
	// serviceCounter 
	protected synchronized void enteringServiceMethod()
	{
		serviceCounter++; 
	}
	protected synchronized void leavingServiceMethod()
	{
		serviceCounter--;
	}
	protected synchronized int numServices()
	{
		return serviceCounter;
	} 
	//shuttingDown 
	protected setShuttingDown(Boolean flag)
	{
		shuttingDown = flag;
	}
	protected Boolean isShuttingDown()
	{
		return shuttingDown;
	} 
}
这个service方法每次在它进入时要增加,而在它返回退出时要减少: 
protected void service(HttpServletRequest req£HttpServletResponse resp)
throws ServletException IOException
{
	enteringServiceMethod();
	try
	{
		super.service(req£resp);
	} finally {leavingServiceMethod();} 
}
destroy方法应当检查serviceCounter,如果存在长时间方式运行的话,设置变量shuttingDown。这个变量将会让那个正在处理请求的线程知道该结束了。destroy 方法应当等待这几个service 方法完成,这样就是一个清楚的关闭过程了。
public void destroy()
	{
	/*检查是否有线程在运行,如果有,告诉它们停止*/ 
		if (numServices() > 0)
		{
			setShuttingDown(true);
		}
	/*等待它们停止*/ 
	while(numService() > 0)
	{
		try{thisThread.sleep(interval);}
		catch (InterruptedException e){} 
	} 
}
long-running 方法如必要应当检查这个变量,并且解释它们的工作: 
public void doPost(…) 
{ 
for(i = 0; ((i < lotsOfStuffToDo) && !isShuttingDown()); i++) 
{
		try {partOfLongRunningOperation(i); } catch (InterruptedException e) {} 
} 
} 

⌨️ 快捷键说明

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