java线程thread详解
2013-03-23 14:37
381 查看
Ø线程的概述(Introduction)
线程是一个程序的多个执行路径,执行调度的单位,依托于进程存在。 线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做线程栈,是在建立线程时由系统分配的,主要用来保存线程内部所使用的数据,如线程执行函数中所定义的变量。
注意:Java中的多线程是一种抢占机制而不是分时机制。抢占机制指的是有多个线程处于可运行状态,但是只允许一个线程在运行,他们通过竞争的方式抢占CPU。
Ø线程的定义(Defining)
定义一个线程(Defining a Thread)有两种方法
1) 继承java.lang.Thread类
注意:重写(override)run()方法在该线程的start()方法被调用后,JVM会自动调用run方法来执行任务;但是重载(overload)run()方法,该方法和普通的成员方法一样,并不会因调用该线程的start()方法而被JVM自动运行。 例如:
不建议使用此方法定义线程,因为采用继承Thread的方式定义线程后,你不能在继承其他的类了,导致程序的可扩展性大大降低。
2) 实现java.lang.Runnable接口
Ø线程的启动(Starting)
任何一个线程的执行的前提都是必须有Thread class的实例存在,并且通过调用run()方法启动线程。
1)如果线程是继承Thread类,则创建方式如下:
2)如果是实现Runnable接口,则创建方式如下:
转载自:
Java Thread 总结
拓展阅读:
Java Thread 用法实例
线程是一个程序的多个执行路径,执行调度的单位,依托于进程存在。 线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做线程栈,是在建立线程时由系统分配的,主要用来保存线程内部所使用的数据,如线程执行函数中所定义的变量。
注意: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 用法实例
相关文章推荐
- java多线程同步以及线程间通信详解&消费者生产者模式&死锁&Thread.join()(多线程编程之二)
- Java知多少(58)线程Runnable接口和Thread类详解
- Java Thread(线程)案例详解sleep和wait的区别
- java Thread线程方法详解
- Java并发学习之线程状态及Thread常用方法详解
- Java Thread(线程) 详解sleep和wait的区别
- Java Thread(线程)案例详解sleep和wait的区别
- Java Thread.join()详解--父线程等待子线程结束后再结束
- Java Thread(线程)案例详解sleep和wait的区别
- Java Thread(线程)案例详解sleep和wait的区别
- 进程&线程(&java.lang.Thread)详解
- 进程&线程(&java.lang.Thread)详解
- Java Thread(线程)案例详解sleep和wait的区别
- Java Thread(线程)案例详解sleep和wait的区别
- Java 线程对比(Thread,Runnable,Callable)实例详解
- Java之Thread线程相关yield()、sleep()、wait()、join()、run和start区别详解
- Java Thread(线程)案例详解sleep和wait的区别
- Java Thread(线程)案例详解sleep和wait的区别
- java之Thread线程相关yield()、sleep()、wait()、join()、run和start区别详解
- java多线程同步以及线程间通信详解&消费者生产者模式&死锁&Thread.join()(多线程编程之二)