我有一个打印服务,现在也会进行文件集成,为了同时执行这两项任务我虽然使用了线程。
看到此Thread Tutorial后,我搜索了Join do.
如果我没错,Join会终止该帖子,对吧?所以我的问题在这里,因为服务应该全天候运行,直到有人需要停止线程,我可以只做一个Thread.Sleep让他们等待下一次交互而不是加入并再次启动它们吗?
即使他们使用不同的方法使用不同的对象,他们仍然可以给出死锁吗?因为这是一项服务,所以我不能让它时间陷入僵局。
编辑:我做了以下测试,似乎运行良好,任何有更多使用线程经验的人都可以检查以后是否会引起我的问题? (此代码是测试样本,不是我的服务)。
答案 0 :(得分:1)
加入终止线程,对吗?
不,它一直等到线程完成。
我可以做一个Thread.Sleep让他们等待下一次交互而不是加入并再次启动它们吗?
是的,你可以这样做。根据您的体系结构,您还可以使用BlockingCollection
将项目排队以在单独的线程中处理,并在另一个线程中执行它们。
即使他们使用不同的方法使用不同的对象,他们仍然会出现死锁吗?
好吧,如果你用错误的方式编写代码,它们就可以了。除了记住两个方法在同一时间调用某些共享代码的所有时间,导致竞争条件和死锁时,没有快速简单的解决方法。