【问题标题】:working of threads simultaneously at process level? [duplicate]在进程级别同时工作线程? [复制]
【发布时间】:2018-04-11 09:36:38
【问题描述】:

在多线程概念中,我们在一个程序中创建不同的线程。我的问题是,线程是进程的一部分并并行执行还是在进程内轮流执行?

【问题讨论】:

    标签: java multithreading operating-system thread-safety multitasking


    【解决方案1】:

    我不确定当您说“进程内部”时您的意思是什么,但一般来说,线程的调度完全取决于操作系统,尽管大多数操作系统都提供了某种请求线程的方式和/或进程优先级。在 Java 中,您可以使用 Thread.setPriotity 方法设置线程优先级,但 Java 运行时库不会公开我所知道的进程优先级(尽管您通常可以为此使用特定于平台的库)。

    线程是否真正并行运行取决于它们是否恰好在任何时间点被调度在单独的处理器上。否则,它们不会并行运行,但可以互相抢占。这意味着操作系统将在暂停线程并切换到另一个线程之前运行一段时间。

    许多操作系统还提供了一种将处理器“亲和性”分配给线程的方法,这可用于增加线程在特定处理器上运行的可能性,但这也未在标准 Java 运行时库中公开。

    【讨论】:

    • 实际上我想知道.....假设处理器内部是否有 2 个进程,即单核,其中 1 个是我们的 java 程序的进程。在我们的程序中有 2 个线程。如果处理器给我们的程序进程执行时间,那么它们将如何运行....第一个选项..两个线程将立即执行它们的代码,这是并行(或)第二个选项..线程将轮流由线程调度器并执行他们的代码?
    • 如果您只有一个处理器内核,您的线程实际上无法并行执行。因此,如果我正确理解您的情况,我认为只有第二个选项是可能的。
    猜你喜欢
    • 2022-08-06
    • 2012-01-17
    • 1970-01-01
    • 2019-04-06
    • 2012-01-09
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多