在Java中使用线程

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方法中执行任务,每个线程是否处理自己的变量,尽管每个线程中的变量是相同的?

Roh*_*ain 5

它会等待完成run方法中的任务来创建另一种方法吗?

不,这就是重点Multithreading.每个线程都有自己的执行堆栈.因此,当你启动一个线程时,它进入run()方法,并在另一个堆栈中执行它,同时main线程继续执行,在它自己的堆栈中.

之后,main线程可以产生另一个线程.因此,所有线程同时运行,但当然,一次一个,基于所使用的特定CPU分配算法在它们之间共享CPU.

这里不可能写下有关多线程执行过程的所有细节.我宁愿建议阅读一些教程或搜索一些关于概念的在线资源Multithreading.一旦理解清楚,继续实施Java.

以下是您可以从以下开始的一些教程链接: -