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

📄 processthread.java

📁 MilGra0.8b for java media server
💻 JAVA
字号:
/*   Milenia Grafter Server     Copyright (c) 2007-2008 by Milan Toth. All rights reserved.     This program is free software; you can redistribute it and/or   modify it under the terms of the GNU General Public License   of the License, or (at your option) any later version.     This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.     You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.    */ package com.milgra.server;/**	ProcessThread class		@mail milgra@milgra.com	@author Milan Toth	@version 20080315	Tasks of Processthread			- Execute related processes		- Add/remove process		- Calculate execution time		**/import java.util.ArrayList;public class ProcessThread extends Thread{		// count - delay check counter	// start - delay check start stamp	// delay - execution time		public int count;	public long start;	public long delay;					// alive - thread is running	// change - change in Process list		public boolean alive;			public boolean change;		// plus - processes to add	// minus - processes to remove	// processes - process list		public ArrayList < OProcess > plus;				public ArrayList < OProcess > minus;			public ArrayList < OProcess > processes;			/**	 * Creates a new ProcessThread instance	 */		public ProcessThread ( )	{				// System.out.println( System.currentTimeMillis() + " ProcessThread.construct " );		count = 0;		alive = true;		change = false;				plus = new ArrayList < OProcess > ( );		minus = new ArrayList < OProcess > ( );		processes = new ArrayList < OProcess > ( );			}		/**	 * Starts Thread	 */		public void run ( )	{				// System.out.println( System.currentTimeMillis() + " ProcessThread.run " );				try		{										while ( alive )			{								// step all processes								for ( OProcess process : processes ) process.step( );				// process change				if ( change )				{															synchronized ( plus )					{												// add/remove new processes							processes.addAll( plus );						processes.removeAll( minus );												plus.clear( );						minus.clear( );												// calculate delay											if ( count == 2 ) start = System.currentTimeMillis( ); else						if ( count == 1 ) delay = System.currentTimeMillis( ) - start - Library.STEPTIME; else						if ( count == 0 ) change = false;						if ( count != 0 ) count--;						}									}								// sleep for steptime											Thread.sleep( Library.STEPTIME );						}					}		catch ( InterruptedException exception ) { }			}		/**	 * Starts a delay check process	 */		public void update ( )	{				//System.out.println( System.currentTimeMillis() + " ProcessThread.update " );				count = 2;		change = true;			}		/**	 * Adds new Process	 * @param ProcessX process	 */		public void addProcess ( OProcess processX )	{				//System.out.println( System.currentTimeMillis() + " ProcessThread.addProcess " + processX );				synchronized ( plus ) 		{ 						plus.add( processX ); 			change = true;					}					}		/**	 * Removes Process	 * @param ProcessX process	 */		public void removeProcess ( OProcess processX )	{				//System.out.println( System.currentTimeMillis() + " ProcessThread.removeProcess " + processX );				synchronized ( plus ) 		{						minus.add( processX ); 			change = true;					}			}	}

⌨️ 快捷键说明

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