java 之 thread

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值