Java多线程(一)

进  程:Process
线  程:Thread
多线程:MultiThread
并  发:Concurrent

多任务:同一时刻“似乎”有多个程序在同时运行。
实际上:只有当你有一台多处理器的机器,不然并发处理就是骗人的。
        一个CPU时,操作系统将CPU时间划分成小的片段,分配给不同
  的程序,同一时刻只有一段代码是运行的。

JDK

接口:public interface Runnable{ void run();  }
所有实现Runnable接口的类都可以被启动为一个新线程,新线程会执行该
实例的run方法,当run方法执行完毕,线程结束,并无法重新启动,只能
重新生成实例,启动一个新线程。
Thread类:public class Thread implements Runnable {
 public native void start( ) { this.run(); }
 public void run() { return; }
}
Thread类是实现了Runnable接口的一个实例,它代表一个线程的实例,并
且,启动线程的唯一方法就是通过Thread类的start()实例方法:
Thread t = new Thread();
t.start();

start()方法是一个native方法,它将启动一个新线程,并执行run()方法。
Thread类默认的run()方法什么也不做就退出了。注意:直接调用run()方
法并不会启动一个新线程,它和调用一个普通的java方法没有什么区别。

自定义线程
方法1:自己的类extend Thread,并复写run()方法,就可以启动新线程并
执行自己定义的run()方法。例如:
public class MyThread extends Thread {
    public run() {
        System.out.println("MyThread.run()");
    }
}
在合适的地方启动线程:new MyThread().start();
方法2:自定义的类已经继承了一个基类,无法直接继承Thread(Java不支持
多继承哦),这样就必须实现一个Runnable接口
public class MyThread extends OtherClass implements Runnable{
 public run(){....}
}
实例化一个Thread,以自定义类的实例为参数
MyThread mythread = new MyThread();
Thread t = new Thread(mythread);
t.start();

事实上,当传入一个Runnable target参数给Thread后,Thread的run()方法就会
调用target.run(),参考JDK源代码:
public void run() {
    if (target != null) {
        target.run();
    }
}

posted @ 2009-06-26 09:50  南守拥  阅读(218)  评论(0编辑  收藏  举报