多线程两种最常用的例子

1.Thread 方法的子类

package cc;

class myThread extends Thread {
    private String title ;
    public myThread(String title){
        this.title = title ;
    }
    public void run(){
        for(int x = 0 ; x < 202; x++){
            String sub = this.title.substring(0,3) ;
            System.out.println(sub);
        }
    }
}
public class Demo {


    public static void main(String[] args) {
        myThread m1 = new myThread("m1m1m1m1") ;
        myThread m2 = new myThread("m2m2m2m2") ;
        m1.start() ;
        m2.start() ;

    }

}

为什么要用start() ?

在Thread类的start的方法里面有一个异常抛出

Throws:
IllegalThreadStateException - if the thread was already started.

在start()方法里面要调用一个start0() 方法,这个方法使用了(JNI )技术,他调用了本机操作系统的函数。

 

2使用Runnable 接口实现多线程

如果自己的类已经extends另一个类,就无法直接extends Thread,此时,必须实现一个Runnable接口,如下:

package cc;
class A{
    
}
class myThread extends A implements Runnable{
    private String title ;
    public myThread(String title){
        this.title = title ;
    }
    public void run(){
        for(int x = 0 ; x < 202; x++){
            String sub = this.title.substring(0,3) ;
            System.out.println(sub);
        }
    }
}
public class Demo {


    public static void main(String[] args) {
        myThread m1 = new myThread("m1m1m1m1") ;
        Thread thread = new Thread (m1) ;
        myThread m2 = new myThread("m2m2m2m2") ;
        Thread thread2 = new Thread(m2) ;
        thread.start();
        thread2.start();

    }

}

先实现一个接口,然后实例化一个Thread类,然后将时间的接口传入这个实例化的Thread类中。

 

posted @ 2016-01-24 09:38  式微胡不归  阅读(282)  评论(0编辑  收藏  举报