当前位置: 首页 > 面试题库 >

Java中的进程与线程

鲁鸿
2023-03-14
问题内容

在我阅读的问题中,我们建议在进程上使用线程,因为线程速度更快。我决定使用程序的线程来编辑Wikipedia中某个类别的文章。该程序获取要编辑的文章列表,然后将文章划分为10个线程。这样一来,我每分钟进行6-7次编辑,这与我没有使用线程的速度相同。当我启动程序的多个实例并为每个实例指定要处理的类别时,我看到每个进程每分钟可以进行6-7次编辑(我用5个进程进行了测试)。

为什么我的流程更快?以及为什么线程没有进行任何更改?

代码(不完整,只是有一个想法):

 public static wiki = new Wiki();

 public process(){
      String[] articles = wiki.getArticles(category);

      for(int i=0; i< 10; i++){
            String[] part = getPart(articles, i, 10); 
            MyThread t = new MyThread(part);
            list.add(t);
      }
      ExecutorService.invokeAll(list); //I'm not sure about the syntax of the function
 }

public class MyThread extends Thread {
     public String[] articles ;

     public MyThread(String[] articles) {
         this.articles = articles;
     }

     public void run() {
         //some logic
         wiki.edit(...)
     }
}

问题答案:

每个进程都有许多线程来完成其工作。如果您有一个带有N个线程的进程或一个带有1个线程的N进程,除了没有什么区别。

  • 线程重量更轻,开销也稍少。他们的差异以毫秒为单位,因此您不太可能在这里获得收益。
  • 使用更多的进程,间接地允许您的程序使用更多的内存(由于每个进程的堆大小有限,可以更改)。如果您要拥有N个进程,则公平的比较是将每个进程的内存限制为1 / N的内存量。
  • 更有可能发生的事情是,您正在限制诸如锁之类的共享资源。这意味着您的附加线程几乎没有价值,因为您的程序无法有效使用它们。通过使用多个进程,您可以中断线程之间的连接。

我看到每个进程每分钟可以进行6-7次编辑

每次编辑需要10秒钟,听起来很长。也许有必要使用CPU事件探查器优化代码以提高性能。



 类似资料:
  • 问题内容: 我正在阅读SašaJurić撰写的《行动中的长生不老药》,在第一章中说: Erlang进程彼此完全隔离。它们不共享内存,并且一个进程的崩溃不会导致其他进程的崩溃。 Java线程也不是真的吗?我的意思是,当Java线程崩溃时,它也不会崩溃其他线程- 尤其是,如果我们正在查看请求处理线程(请将该线程排除在此讨论之外) 问题答案: 在我之后重复: “这些是不同的范例” 大声说20次左右-这是

  • 线程与进程是操作系统里面的术语,简单来讲,每一个应用程序都有一个自己的进程。 操作系统会为这些进程分配一些执行资源,例如内存空间等。 在进程中,又可以创建一些线程,他们共享这些内存空间,并由操作系统调用,以便并行计算。 我们都知道现代操作系统比如 Mac OS X,UNIX,Linux,Windows 等可以同时运行多个任务。 打个比方,你一边在用浏览器上网,一边在听敲代码,一边用 Markdow

  • 问题内容: 我正在编写一个J2ME应用程序。其中一项功能是定期轮询目录的内容,如果有任何新内容,请将其绘制在屏幕上。我通过让UI表单启动一个带有指向自身的指针的轮询线程来完成此操作,并且当轮询线程找到某些内容时,它将回调该表单并调用syncrhonized方法来更新其显示。这似乎很好。 我的问题是这个。在C#/。NET中,我知道让非UI线程更新UI并不是一件好事,而处理此问题的正确方法是将其委派给

  • 一、进程的状态与转换 运行状态:进程正在处理机上运行。在单处理机环境下,每一时刻最多只有一个进程处于运行状态。 就绪状态:进程已处于准备运行的状态,即进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行。 阻塞状态,又称等待状态:进程正在等待某一事件而暂停运行,如等待某资源为可用(不包括处理机)或等待输入/输出完成。即使处理机空闲,该进程也不能运行。 注意区别就绪状态和等待状态: 就绪状态

  • 1、进程的概念和特征 (1) 进程的概念 在多道程序环境下,允许多个程序并发执行,此时他们将失去封闭性,并具有间断性和不可再现性的特征。为此引入了进程的概念,以便更好地描述和控制程序的并发执行,实现操作系统的并发行和共享性。为此引入了进程的概念,以便更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性。 为了是参与并发执行的程序能独立的运行,必须为之配置一个专门的数据结构,称之为进程控制块

  • 9.3.2 进程与线程 操作系统控制处理器在多个程序之间切换执行的过程称为调度。传统的多任务操作系统是以进程为单位进行调度的。进程(process)是指程序的一次执行所形成的实体,每当程序 开始执行,就会创建一个进程。每个进程由程序代码以及一些状态信息(如进程数据的当前 值和当前执行点等)组成,状态信息也称为进程的上下文。 注意,程序与进程是不同的概念。首先,不同程序在计算机中执行,自然形成不同的