【发布时间】:2018-04-11 09:36:38
【问题描述】:
在多线程概念中,我们在一个程序中创建不同的线程。我的问题是,线程是进程的一部分并并行执行还是在进程内轮流执行?
【问题讨论】:
标签: java multithreading operating-system thread-safety multitasking
在多线程概念中,我们在一个程序中创建不同的线程。我的问题是,线程是进程的一部分并并行执行还是在进程内轮流执行?
【问题讨论】:
标签: java multithreading operating-system thread-safety multitasking
我不确定当您说“进程内部”时您的意思是什么,但一般来说,线程的调度完全取决于操作系统,尽管大多数操作系统都提供了某种请求线程的方式和/或进程优先级。在 Java 中,您可以使用 Thread.setPriotity 方法设置线程优先级,但 Java 运行时库不会公开我所知道的进程优先级(尽管您通常可以为此使用特定于平台的库)。
线程是否真正并行运行取决于它们是否恰好在任何时间点被调度在单独的处理器上。否则,它们不会并行运行,但可以互相抢占。这意味着操作系统将在暂停线程并切换到另一个线程之前运行一段时间。
许多操作系统还提供了一种将处理器“亲和性”分配给线程的方法,这可用于增加线程在特定处理器上运行的可能性,但这也未在标准 Java 运行时库中公开。
【讨论】: