java 之 thread

来源:互联网 发布:杭州java培训哪家好 编辑:程序博客网 时间:2024/05/15 23:45

http://www.cnblogs.com/DreamSea/archive/2012/01/11/JavaThread.html

线程的定义(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的方式定义线程后,你不能在继承其他的类了,导致程序的可扩展性大大降低。

 

 

 

 

 

以下方法不便创建多个thread线程:-----------------------------------

 

Runnable是Thread的接口,在大多数情况下“推荐用接口的方式”生成线程,因为接口可以实现多继承,况且Runnable只有一个run方法,很适合继承。

使用Thread:

只需要new一个实例出来,调用start()方法即可以启动一个线程。
Thread Test = new Thread();
Test.start();

 

使用Runnable:

需要先new一个继承Runnable的实例,之后用子类Thread调用
Test impelements Runnable
Test t = new Test();

 

Thread test = new Thread(t); //在我的实际用例里,t 是 this

在某个题目里,需要分别打印出a与b各10次,并且每打印一次a睡1秒,打印一次b睡2秒:

class T implements Runnable{ String s = ""; int time = 0; public void run (){    for (int i=0;i<10;i++) {     try {      Thread.sleep(time);     } catch (InterruptedException e) {      Thread.interrupted();     }     System.out.println(s);    } } }public class Test { public static void main(String[] args) {    T t1 = new T();    T t2 = new T();    t1.s = "a";    t1.time = 100;    t2.s = "b";    t2.time = 200;    Thread a = new Thread(t1);    a.start();    Thread b = new Thread(t2);    b.start();   }}


 

 

 

 

 

 

 

 

 

 

 

 

 

转自(百度和网页http://jinguo.iteye.com/blog/286772

原创粉丝点击