在问一个多线程的问题,如何管理线程
假如线程数可以由用户动态的增加或者减少,如果管理这些线程,用线程数组吗还是Hash表?
for ( int i = 0; i < 8; i ++ )
{
Thread t = new Thread( new ThreadStart(PrintUserId) );
t.Start();
}
如果我的线程通过上述方式创建,同时PrintUserId是一个非常耗时的过程,那么
1) 如何枚举当前进程中的这些线程?
2) 如果PrintUserId执行到一半我就像结束进程,应该怎么操作?
谢谢
------解决方案--------------------用数组,Hash,ArrayList等都可以,把它做成全局的。
可以在PrintUserId中添加方法在其结束前从上面的全局列表中移除自己的线程。
如果PrintUserId不方便改,就再做个方法把PrintUserId放到其中,结束时移除自己。
当然也可以单独为用户做一个方法来遍历全局列表,如果线程结束就移除。
------解决方案--------------------to 1) 如何枚举当前进程中的这些线程?
2) 如果PrintUserId执行到一半我就像结束进程,应该怎么操作?
如果是自己在创建线程的时候,把它保存到集合容器中,那么实现这两点是很容易的。
如果创建的时候没有保存,你可以通过process.Threads来实现,不过相应的就不直观了。
------解决方案--------------------线程池
------解决方案--------------------创建的时候保存到一个集合中去,然后进行操作就是了。
------解决方案--------------------结束进程最好用通知它自己结束,最好不要暴力结束