在我阅读的问题中,我们建议在进程上使用线程,因为线程速度更快。我决定使用程序的线程来编辑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进程,除了没有什么区别。
我看到每个进程每分钟可以进行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)是指程序的一次执行所形成的实体,每当程序 开始执行,就会创建一个进程。每个进程由程序代码以及一些状态信息(如进程数据的当前 值和当前执行点等)组成,状态信息也称为进程的上下文。 注意,程序与进程是不同的概念。首先,不同程序在计算机中执行,自然形成不同的