1、每新增一个任务,都放置到现有任务的后面;
2、每新增一个任务,都为它创建一个线程来处理;
3、每个任务都采用一个线程来处理,一个任务对应一个线程;
4、有n个任务,则程序启动后就要创建好n个线程;
5、每次只能执行一个线程,一旦执行完,无论任务的结果是成功还是失败,都要唤醒下一个线程;
6、每个线程内A、B出现异常该如何处理?(异常发生后要执行应对措施,可能会使该线程多执行时间);
7、过了若干时间T后,该到某个线程X执行了,但当前其他线程Y还没有执行完,该怎么做?让X继续等待吗?
8、对任务的启动/停止/删除是不是可以认为对应着线程的恢复/挂起/销毁?
9、每个任务每隔若干时间T都要执行一遍,如何能做得到?使用定时器吗?
我对多线程技术不熟悉,正在了解学习中。上面9点有什么不正确的地方,请大家帮忙指出来。
简单来说就是有多个任务要定时重复执行,使用多线程技术应该怎么做?
请大家给出有建设性的回复哈。
12 个解决方案
#1
每次只能执行一个线程,一旦执行完,无论任务的结果是成功还是失败,都要唤醒下一个线程;
从此要求理解,lz整体只要一个线程轮流的执行任务就可以,反正任务在执行时,别的线程都不能执行
从此要求理解,lz整体只要一个线程轮流的执行任务就可以,反正任务在执行时,别的线程都不能执行
#2
线程池来做任务,来了任务放入队列,线程池从队列中取任务执行
队列就不停地增加任务,线程执行完了,就做新的任务
队列就不停地增加任务,线程执行完了,就做新的任务
#3
整个问题是不是太复杂了,大家没有看明白呢?
#4
我好像就没有耐心看下去
#5
整个问题是不是太复杂了,大家没有看明白呢?
#6
内容不精炼 看不下去
看标题,
定时器 隔段时间重复执行
任务有依赖关系,就用一个线程排好顺序一个一个去执行
看标题,
定时器 隔段时间重复执行
任务有依赖关系,就用一个线程排好顺序一个一个去执行
#7
1. 如果启用的线程过多,可以考虑用线程池。
因为线程并不是越多效率越高,线程切换都需要系统开销。
2.多线程有先后要求,肯定涉及线程同步。
3.问题中说的5、6涉及异常处理,就是某次处理出现挂死或者异常,需要有对应的
超时检测及处理。
4.多线程处理不好,引发的异常多种多样,如果线程异常终止,可能会涉及资源泄露。
建议先把业务逻辑完成,再进行优化。
因为线程并不是越多效率越高,线程切换都需要系统开销。
2.多线程有先后要求,肯定涉及线程同步。
3.问题中说的5、6涉及异常处理,就是某次处理出现挂死或者异常,需要有对应的
超时检测及处理。
4.多线程处理不好,引发的异常多种多样,如果线程异常终止,可能会涉及资源泄露。
建议先把业务逻辑完成,再进行优化。
#8
“HANDLE hjob=CreateJobObject(&sa,"job1");” 。。。 ???
#9
整个问题是不是太复杂了,大家没有看明白呢?
#10
线程池,应该会涉及到同步问题。
#11
问题的基本方向是把复杂问题简单化。
#12
+1
#1
每次只能执行一个线程,一旦执行完,无论任务的结果是成功还是失败,都要唤醒下一个线程;
从此要求理解,lz整体只要一个线程轮流的执行任务就可以,反正任务在执行时,别的线程都不能执行
从此要求理解,lz整体只要一个线程轮流的执行任务就可以,反正任务在执行时,别的线程都不能执行
#2
线程池来做任务,来了任务放入队列,线程池从队列中取任务执行
队列就不停地增加任务,线程执行完了,就做新的任务
队列就不停地增加任务,线程执行完了,就做新的任务
#3
整个问题是不是太复杂了,大家没有看明白呢?
#4
我好像就没有耐心看下去
#5
整个问题是不是太复杂了,大家没有看明白呢?
#6
内容不精炼 看不下去
看标题,
定时器 隔段时间重复执行
任务有依赖关系,就用一个线程排好顺序一个一个去执行
看标题,
定时器 隔段时间重复执行
任务有依赖关系,就用一个线程排好顺序一个一个去执行
#7
1. 如果启用的线程过多,可以考虑用线程池。
因为线程并不是越多效率越高,线程切换都需要系统开销。
2.多线程有先后要求,肯定涉及线程同步。
3.问题中说的5、6涉及异常处理,就是某次处理出现挂死或者异常,需要有对应的
超时检测及处理。
4.多线程处理不好,引发的异常多种多样,如果线程异常终止,可能会涉及资源泄露。
建议先把业务逻辑完成,再进行优化。
因为线程并不是越多效率越高,线程切换都需要系统开销。
2.多线程有先后要求,肯定涉及线程同步。
3.问题中说的5、6涉及异常处理,就是某次处理出现挂死或者异常,需要有对应的
超时检测及处理。
4.多线程处理不好,引发的异常多种多样,如果线程异常终止,可能会涉及资源泄露。
建议先把业务逻辑完成,再进行优化。
#8
“HANDLE hjob=CreateJobObject(&sa,"job1");” 。。。 ???
#9
整个问题是不是太复杂了,大家没有看明白呢?
#10
线程池,应该会涉及到同步问题。
#11
问题的基本方向是把复杂问题简单化。
#12
+1