创建线程的两种传统方式

来源:互联网 发布:韩国美颜软件 编辑:程序博客网 时间:2024/05/04 09:22

线程创建

创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。例如,计算大于某一规定值的质数的线程可以写成:

 class PrimeThread extends Thread {         long minPrime;         PrimeThread(long minPrime) {             this.minPrime = minPrime;         }         public void run() {             // compute primes larger than minPrime              . . .         }     }

然后,下列代码会创建并启动一个线程:

     PrimeThread p = new PrimeThread(143);     p.start();

创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。采用这种风格的同一个例子如下所示:

     class PrimeRun implements Runnable {         long minPrime;         PrimeRun(long minPrime) {             this.minPrime = minPrime;         }         public void run() {             // compute primes larger than minPrime              . . .         }     }

然后,下列代码会创建并启动一个线程:

     PrimeRun p = new PrimeRun(143);     new Thread(p).start();

代码测试

类 Thread

新建类PrimeThread

class PrimeThread extends Thread {    long minPrime;    PrimeThread(long minPrime) {        this.minPrime = minPrime;    }    // 重写run方法    public void run() {        for (int i = 0; i < 5; i++) {            System.out.println("编号:" + minPrime + "。第" + i + "次执行");        }    }}

Main方法创建并启动一个线程

public class TestThread {    public static void main(String[] args) {        //创建线程1        PrimeThread pThread = new PrimeThread(1);        //创建线程2        PrimeThread pThread2 = new PrimeThread(2);        //启动        pThread.start();        pThread2.start();    }}

运行结果
这里写图片描述

Runnable 接口

新建类PrimeThread,实现Runnable 接口

class PrimeThread implements Runnable {    long minPrime;    PrimeThread(long minPrime) {        this.minPrime = minPrime;    }    // 实现run方法    public void run() {        for (int i = 0; i < 5; i++) {            System.out.println("编号:" + minPrime + "。第" + i + "次执行");        }    }}

Main方法创建并启动一个线程

public class TestThread {    public static void main(String[] args) {        //创建线程1        PrimeThread pThread = new PrimeThread(1);        //创建线程2        PrimeThread pThread2 = new PrimeThread(2);        //通过Thread启动线程        Thread thread = new Thread(pThread);        Thread thread2 = new Thread(pThread2);        //启动        thread.start();        thread2.start();    }}

运行结果
这里写图片描述

PS:建议多使用Runnable 方式

原创粉丝点击