我有一个大型单线程java程序,需要很长时间才能输出结果。我正在考虑使其并发,但这让我想知道:并发对我的应用程序有帮助吗?真的有帮助吗?
因此,我在这里问:
Which properties I should look for (in my program) in order to say that multithreading/concurrency is the way to go?
这有什么规则吗?
最佳答案
只要您的程序可以分解为多个彼此独立的并行可执行任务,就应该使用多线程。 例如,
int main() {
for (i=0;i<5;i++)
fprintf("this is for task1") // consider this function is writing data to file for task1
for (i=0;i<5;i++)
fprintf("this is for task2") // consider this function is writing data to file for task2
return 0;
}
在这里我们可以看到,写入 file1 和 file2 可以并行完成,因为它们彼此完全独立。因此,这里可以使用多线程来同时运行这两个任务。
但是在多线程之前你应该考虑一些事情,
- 你真的需要它吗?这会妨碍您的应用程序逻辑吗?
如果不使用多线程,你能改进它吗?
在上面的代码中,我们可以在不使用多线程的情况下进行一些改进,
int main() {
for (i=0;i<5;i++) { fprintf("this is for task1") fprintf("this is for task2") }
返回0; }
这里我们可以避免不需要的第二个循环。这里我们无法避免串行文件写入,但我们比以前有了一些改进(不要多想,这只是一个例子:))
- 仅当您的 CPU 上有多个内核时,多线程才会有帮助,否则尽管您使用多线程,结果将与串行代码执行类似。
希望你现在清楚了:)
关于java - 我如何知道/感觉到多线程对我的程序有帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26879384/