这只是实际线程设计的一般问题。我专门在 android 上使用 Java,但一般设计将是这个问题的更好重点。
很简单,线程中的方法好还是线程中的方法好。
例子,
假设我们有 3 个方法/函数/等等。
public void readMail()
{
//Logic...
}
public void postQuestion()
{
//Logic...
}
public void answerQuestion()
{
//Logic...
}
有没有更好
A:方法中的线程
public void readMail()
{
new Thread(new Runnable()
{
public void run()
{
//Logic
}
}).start();
}
然后像在任何 OO 情况下一样调用您的方法。说
Email.readMail();
B:线程内的方法
//note this could be inside a method or a class that extends runnable
new Thread(new Runnable()
{
public void run()
{
readMail();
postQuestion();
answerQuestion();
}
}).start();
最佳答案
Method within Thread
- [+] 如果您的方法不需要确保并发执行的属性,或者它们具有确定性的运行时行为(时间和性能),则此方法可以作为并发的高级管理应用程序;即并发性保持在对象级别而不是方法级别。
- [-] 由于并发性保持在线程/对象级别,应用程序可能会失去响应能力 的概念。一个用户可能正在“发布问题”,而另一个用户正在“获取答案”;两者可以同时处理。
Thread with Method
- [+] 更细粒度的并发控制:每个方法都成为操作系统级别的一个执行单元。这就是为什么正如 @LouisWasserman 所提到的,也许利用
Executor
框架会更有意义。 - [-] 通常,线程资源丰富并且昂贵;因此,这意味着在高频/负载应用程序中使用多次调用一种方法时,您将遇到性能问题。特别是,如果存在方法间数据/逻辑依赖性。在这方面,同步 也成为一个问题,这就是为什么使用 Actor 模型可以提供更多帮助。
我建议阅读更多关于 Actor models 的内容及其可用的实现。
关于java - 良好的线程设计 : "Method in Thread" or "Thread in Method",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10056507/