【问题标题】:Multithreading: How can we do Time Slicing using Java?多线程:我们如何使用 Java 进行时间切片?
【发布时间】:2020-01-27 10:45:41
【问题描述】:

是否可以通过 In-bult java 类使用 Java 进行时间切片?

在互联网上搜索时,我只得到以下类型的定义:

时间片是一个通常与处理器和操作系统相关的术语...... 这意味着...当您有许多由操作系统运行的进程时,每个进程都必须获取 一个运行的机会..每个进程都应该在特定时间获得处理器......所以现在如果你有 3 个进程正在运行,例如 p0、p1、p2,然后现在 p0 可以运行 5 毫秒,然后轮流运行 p1,然后运行 ​​p2 ..... 因此,您为必须由处理器运行的每个进程分配了一些称为时间片的时间..... 因此,这些进程存在不同的算法(取决于操作系统) 在处理器上运行.....

我在 Java 面试问题中遇到了这个问题。但无法获得任何与之相关的 Java 代码示例。

时间切片仅仅是操作系统的概念,还是有任何使用 Java 编程的实际用途?有人可以分享同样的例子吗?

【问题讨论】:

    标签: java multithreading operating-system threadpool


    【解决方案1】:

    int n = Runtime.getRuntime().availableProcessors(); 然后启动n + 1 线程。根据定义,如果n + 1 线程在n 内核上运行,那么就会发生时间切片。实际使用,需要运行n + 1线程且只有ncpu核心。

    【讨论】:

    • 谢谢@Elliit Frishch 我有可用的处理器为 4。我将启动 5 个线程,然后默认情况下在操作系统中发生时间切片,并且与程序无关。我的意思是我们不能说它可以通过程序来处理,即我们自己为特定线程分配时间。 (下面也运行时间片)
    • Java没有调度线程的机制; Java 线程由本机线程支持,本机线程由操作系统调度。
    猜你喜欢
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 2018-12-15
    • 1970-01-01
    相关资源
    最近更新 更多