您的位置:首页 > 编程语言 > Java开发

java线程thread详解

2013-03-23 14:37 381 查看
Ø线程的概述(Introduction)

线程是一个程序的多个执行路径,执行调度的单位,依托于进程存在。 线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做线程栈,是在建立线程时由系统分配的,主要用来保存线程内部所使用的数据,如线程执行函数中所定义的变量。
注意:Java中的多线程是一种抢占机制而不是分时机制。抢占机制指的是有多个线程处于可运行状态,但是只允许一个线程在运行,他们通过竞争的方式抢占CPU。
Ø线程的定义(Defining)
定义一个线程(Defining a Thread)有两种方法
1) 继承java.lang.Thread类
/**
 * 使用继承java.lang.Thread类的方式创建一个线程
 * 
 * @author DreamSea 2011-12-29 20:17:06
 */
public class ThreadTest extends Thread {

    /**
     * 重写(Override)run()方法 JVM会自动调用该方法
     */
    public void run() {
        System.out.println("I'm running!");
    }
}


注意:重写(override)run()方法在该线程的start()方法被调用后,JVM会自动调用run方法来执行任务;但是重载(overload)run()方法,该方法和普通的成员方法一样,并不会因调用该线程的start()方法而被JVM自动运行。 例如:
public class ThreadTest extends Thread {

    /**
     * 重写(Override)run()方法 JVM会自动调用该方法
     */
    @Override
    public void run() {
        System.out.println("I'm running!");
    }

    /**
     * 重载(Overload)run()方法 和普通的方法一样,并不会在该线程的start()方法被调用后被JVM自动运行
     */
    public void run(int times) {
        System.out.println("I'm running!(Overload)");
    }
}


不建议使用此方法定义线程,因为采用继承Thread的方式定义线程后,你不能在继承其他的类了,导致程序的可扩展性大大降低。



2) 实现java.lang.Runnable接口
/**
 * 通过实现Runnable接口创建一个线程
 * @author DreamSea
 */
public class ThreadTest implements Runnable {
    public void run() {
            System.out.println("I'm running!");
    }
}




Ø线程的启动(Starting)
任何一个线程的执行的前提都是必须有Thread class的实例存在,并且通过调用run()方法启动线程。
1)如果线程是继承Thread类,则创建方式如下:
ThreadTest1 tt = new ThreadTest1();
tt.start();


2)如果是实现Runnable接口,则创建方式如下:
ThreadTest2 tt = new ThreadTest2();
Thread t = new Thread(tt);
t.start();



转载自:
Java Thread 总结
拓展阅读:
Java Thread 用法实例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: