线程常用的两种创建方法

来源:互联网 发布:java snmp 流量监控 编辑:程序博客网 时间:2024/06/03 20:18
1、继承Thread,重写该类的run()方法。
class MyThread extends Thread {        private int i = 0;    @Override    public void run() {        for (i = 0; i < 100; i++) {            System.out.println(Thread.currentThread().getName() + " " + i);        }    }}

public class ThreadTest {    public static void main(String[] args) {        for (int i = 0; i < 100; i++) {            System.out.println(Thread.currentThread().getName() + " " + i);            if (i == 30) {                Thread myThread1 = new MyThread();     // 创建一个新的线程  myThread1  此线程进入新建状态                Thread myThread2 = new MyThread();     // 创建一个新的线程 myThread2 此线程进入新建状态                myThread1.start();                     // 调用start()方法使得线程进入就绪状态                myThread2.start();                     // 调用start()方法使得线程进入就绪状态            }        }    }}

如上所示,继承Thread类,通过重写run()方法定义了一个新的线程类MyThread,其中run()方法的方法体代表了线程需要完成的任务,称之为线程执行体。当创建此线程类对象时一个新的线程得以创建,并进入到线程新建状态。通过调用线程对象引用的start()方法,使得该线程进入到就绪状态,此时此线程并不一定会马上得以执行,这取决于CPU调度时机。


2、实现Runnable接口,并重写该接口的run()方法,该run()方法同样是线程执行体,创建Runnable实现类的实例,并以此实例作为Thread类的target来创建Thread对象,该Thread对象才是真正的线程对象。






class MyRunnable implements Runnable {    private int i = 0;    @Override    public void run() {        for (i = 0; i < 100; i++) {            System.out.println(Thread.currentThread().getName() + " " + i);        }    }}
class MyRunnable implements Runnable {    private int i = 0;    @Override    public void run() {        for (i = 0; i < 100; i++) {            System.out.println(Thread.currentThread().getName() + " " + i);        }    }}


 
原创粉丝点击