JAVA创建线程的两种方式
(我看网上有一部分帖子写JAVA创建线程有三种方式,其实是不完全正确的。java的官方文档中明确声明了只有两种创建方式,第三种使用线程池的其实并不算是,他的原理也是使用了implement Runnable的方式。)
There are two ways to create a new thread of execution. One is to declare a class to be a subclass of Thread
. This subclass should override the run
method of class Thread
. An instance of the subclass can then be allocated and started. For example, a thread that computes primes larger than a stated value could be written as follows:
(有两种方法,可以创建新的线程。一种是将类声明为Thread的子类。这个子类的实例将会等待被分配和启动。例如,计算素数大于指定值的线程可以编写如下:)
class PrimeThread extends Thread { long minPrime; PrimeThread(long minPrime) { this.minPrime = minPrime; } public void run() { // compute primes larger than minPrime . . . } }
The following code would then create a thread and start it running:
(下面的代码将创建一个线程并使其开始运行:)
PrimeThread p = new PrimeThread(143); p.start();
The other way to create a thread is to declare a class that implements the Runnable
interface. That class then implements the run
method. An instance of the class can then be allocated, passed as an argument when creating Thread
, and started. The same example in this other style looks like the following:
(另一种创建线程的方式是生命一个类 去实现 Runnable接口。然后,该类实现run方法。创建线程的另一种方法是声明一个实现Runnable接口的类。 然后,该类实现run方法。然后这个类的实例,在创建线程的时候当做一个参数传入,并启动。相同类型的例子如下所示:)
class PrimeRun implements Runnable { long minPrime; PrimeRun(long minPrime) { this.minPrime = minPrime; } public void run() { // compute primes larger than minPrime . . . } }
The following code would then create a thread and start it running:
(下面的代码将创建一个线程并启动它运行:)
PrimeRun p = new PrimeRun(143); new Thread(p).start();
上面的文档来源于JAVA官方文档(Thread部分):https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/Thread.html
(上面是我小学英语的水平加上百度翻译的成果,可能不太对,欢迎各位客官提出问题)