Multithreading 线程真的并行工作吗?

Multithreading 线程真的并行工作吗?,multithreading,Multithreading,我需要了解一些关于线程的知识。我正在用Java编写一个小型爬虫程序,我将从一个URL开始,将传出的URL添加到数据库中,然后对下一个URL(不是多线程)进行爬虫 我的项目最终必须是多线程的 我有些怀疑。当使用线程时,我们在函数上使用锁,因此只有一个线程应该使用该函数。那么多线程仍然有用吗 多线程是否有用 是的。线程非常有用,特别是当您的进程是真正可并行的并且您有多个可用的内核时 如果您只有一个CPU,则操作系统会对线程进行时间切片。因此,如果您有许多性质相似的任务,您可能会发现同时启动这些任务不

我需要了解一些关于线程的知识。我正在用Java编写一个小型爬虫程序,我将从一个URL开始,将传出的URL添加到数据库中,然后对下一个URL(不是多线程)进行爬虫

我的项目最终必须是多线程的

我有些怀疑。当使用线程时,我们在函数上使用锁,因此只有一个线程应该使用该函数。那么多线程仍然有用吗

多线程是否有用


是的。

线程非常有用,特别是当您的进程是真正可并行的并且您有多个可用的内核时

如果您只有一个CPU,则操作系统会对线程进行时间切片。因此,如果您有许多性质相似的任务,您可能会发现同时启动这些任务不会带来明显的性能改进,因为它们所做的只是上下文切换。(进行上下文切换所需的资源实际上可能会降低性能。)


如果您有一个长时间运行的流程(例如文件I/O流程或计算),您可以使您的应用程序看起来更具响应性。您可以让一个线程执行该任务,同时允许主线程或用户线程返回,以便客户端可以继续工作而不是等待。

在处理器只有一个内核的时候,多线程意味着伪并行。所以,某个时间处理器执行一个线程,另一个线程。现在,有多处理器系统和双核和四核处理器。因此,真正的多任务处理是可行的