use*_*718 1 java concurrency multithreading
我有一部分代码处理线程,我想详细了解它的功能.run在我的示例中,该方法是空的,但我们假设它对全局变量有一些操作:
import java.io.File;
public class DigestThread extends Thread {
private File input;
public DigestThread(File input) {
this.input = input;
}
public void run() {
}
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
File f = new File(args[i]);
Thread t = new DigestThread(f);
t.start();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在创建一个线程并启动它之后,它会等待在创建/运行另一个线程之前完成run方法中的任务吗?
第二个问题
如果变量已在run方法中声明,这意味着它将被多次声明,因为创建的每个线程都将在run方法中执行任务,每个线程是否处理自己的变量,尽管每个线程中的变量是相同的?
它会等待完成run方法中的任务来创建另一种方法吗?
不,这就是重点Multithreading.每个线程都有自己的执行堆栈.因此,当你启动一个线程时,它进入run()方法,并在另一个堆栈中执行它,同时main线程继续执行,在它自己的堆栈中.
之后,main线程可以产生另一个线程.因此,所有线程同时运行,但当然,一次一个,基于所使用的特定CPU分配算法在它们之间共享CPU.
这里不可能写下有关多线程执行过程的所有细节.我宁愿建议阅读一些教程或搜索一些关于概念的在线资源Multithreading.一旦理解清楚,继续实施Java.
以下是您可以从以下开始的一些教程链接: -
| 归档时间: |
|
| 查看次数: |
1824 次 |
| 最近记录: |