线程真的在并行吗?

时间:2011-03-02 20:57:01

标签: multithreading

我需要了解一些关于线程的事情。我正在用Java编写一个小型爬虫,我将从一个URL开始,将传出的URL添加到数据库并抓取下一个(不是多线程的)。

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

我有些疑惑。使用线程时,我们对函数使用锁定,这样只有一个线程应该使用该函数。那么多线程仍然有用吗?

3 个答案:

答案 0 :(得分:2)

线程非常有用,特别是如果您的进程真正可并行化并且您可以使用多个核心。

如果您只有一个CPU,则操作系统会对线程进行时间分片。因此,如果您有许多本质相似的任务,您可能会发现同时启动它们不会导致显着的性能提升,因为它们所做的只是上下文切换。 (执行上下文切换所需的资源实际上可能会恶化性能。)

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

答案 1 :(得分:0)

  

多线程是有用的....

答案 2 :(得分:0)

在处理器只有一个核心的时候,多线程意味着伪并行。所以,有些时候处理器会执行一个线程现在,有多处理器系统和具有双核和四核的处理器。所以有真正的多任务处理。