如何写线程管理程序
现要求写一DLL供EXE调用,DLL的功能是打开指定文件并转换成二进制,每任务都是一个线程,如果有多个任务则排队等待。
没写过各位帮忙给个示例,或给个思路。
转换成二进制就不用说了,主要是如何进行线程排队并管理,没写过线程的程序啊。
[解决办法]
http://blog.csdn.net/vvvvvvvvvvvvvvvvvvvv/archive/2004/07/26/51710.aspx
[解决办法]
开始的时候只留一个线程打开,其它都挂起,在一个线程处理完后,再启动另一个线程
构建一个线程管理队列
[解决办法]
给你一个JAVA下的线程管理类。虽然语言不同,我想楼主要的是方法。哈哈~~
/**
* <p> Title: 线程管理类 </p>
* <p> Description:主要用来管理程序中的线程,
* 在动态加载与卸载中将有此类来完成在程序中增加与删除线程
* 此类基本有两种方法,get和set主要是对里面的属性进行操作。
* </p>
* <p> Copyright: Copyright (c) 2002 </p>
* <p> Company: 江苏宏图嘉腾软件系统有限公司 </p> < <——————人家写的,我抄的
* @author hoten
* @version 1.0
*/
public class ThreadManager {
static private ThreadManager _instance;
private Hashtable _threadList; < <------哈斯表线程管理
private ThreadGroup _tgRoot;
private ThreadGroup _tgControl;
private ThreadGroup _tgDeal;
private ThreadGroup _tgRead;
private ThreadGroup _tgSendMT;
/**
* 使用此方法获得本类唯一实例。
* @return
*/
static synchronized public ThreadManager getInstance() {
if (_instance == null) {
_instance = new ThreadManager();
}
return _instance;
}
private ThreadManager() {
_tgRoot =new ThreadGroup( "Root ");
_tgControl =new ThreadGroup(_tgRoot, "Control ");
_tgDeal =new ThreadGroup(_tgRoot, "Deal ");
_tgRead =new ThreadGroup(_tgRoot, "Read ");
_tgSendMT =new ThreadGroup(_tgRoot, "Send ");
_threadList =new Hashtable();
}
public synchronized ThreadGroup getRootGroup(){
return _tgRoot;
}
public synchronized void stopRootGroup(){
_tgRoot.interrupt();
}
public synchronized ThreadGroup getControlGroup(){
return _tgControl;
}
public synchronized void stopControlGroup() {
_tgControl.interrupt();
}
public ThreadGroup getDealGroup(){
return _tgDeal;
}
public synchronized void stopDealGroup() {
_tgDeal.interrupt();
}
public synchronized ThreadGroup getReadGroup(){
return _tgRead;
}
public synchronized void stopReadGroup() {
_tgRead.interrupt();
}
public synchronized ThreadGroup getSendMTGroup(){
return _tgSendMT;
}
public synchronized void stopSendMTGroup() {
_tgSendMT.interrupt();
}
/**
* 向线程队列中添加一线程
* @param threadName 线程的名称
* @param thread 线程实例
*/
public synchronized void addThread(String threadName,Thread thread){
_threadList.put(threadName,thread);
}
/**
* 得到一个线程实例
* @param threadName 要取得的线程名
* @return Thread 线程实例
*/
public synchronized Thread getThread(String threadName){
return (Thread)_threadList.get(threadName);
}
/**
* 得到一个线程实例,同时把该实例从线程队列中删除
* @param threadName 要删除的线程名
* @return Thread 线程实例
*/
public synchronized Thread removeThread(String threadName){
return (Thread)_threadList.remove(threadName);
}
/**
* 取得线程队列
* @return Hashtable 队列实例
*/
public synchronized Hashtable getThreadList(){
return _threadList;
}
/**
* 清空线程队列
*/
public synchronized void removeAllThread(){
_threadList.clear();
}
}
[解决办法]
学习
[解决办法]
学习。。。
[解决办法]
其实你的意思是一个线程池
可以参考很多很多的!!!
Java的代码也可以参考
其实都是那个概念
差不多!