Cyh的博客

Email:kissyan4916@163.com
posts - 26, comments - 19, trackbacks - 0, articles - 220

线程1--定义和启动线程

Posted on 2009-06-02 19:46 啥都写点 阅读(363) 评论(0)  编辑  收藏 所属分类: J2SE
关键技术:
  • 线程类必须实现java.lang.Runable接口或者继承java.lang.Thread类,并且实现run方法,run方法没有返回值,也没有输入参数,也不允许抛出异常。
  • 调用Thread类的start实例方法启动一个线程。调用该方法后,线程准备启动,当获得CPU资源时,start方法将自动调用run方法,线程才真正开始运行。

package book.thread;

import java.util.Date;

public class DefineThread {
    
/**
     * 通过继承java.lang.Thread类定义线程
     
*/
    
class ThreadA extends Thread{
        
/**    线程被运行的时刻    */
        
private Date runDate;
        
/**
         * 当线程被运行时调用此方法
         
*/
        
public void run(){
            System.out.println(
"ThreadA begin,");
            
this.runDate = new Date();
            System.out.println(
"ThreadA end.");
        }
    }
    
    
/**
     * 通过实现java.lang.Runnable接口定义线程
     
*/
    
class ThreadB implements Runnable{
        
/**    线程被运行的时刻    */
        
private Date runDate;
        
public void run(){
            System.out.println(
"ThreadB begin,");
            
this.runDate = new Date();
            System.out.println(
"ThreadB end.");
        }
    }
    
/**
     * 启动一个ThreadA线程
     
*/
    
public void startA(){
        Thread threadA 
= new ThreadA();
        
//调用Thread的start方法启动线程
        threadA.start();
    }
    
/**
     * 启动一个ThreadB线程
     
*/
    
public void startB(){
        Runnable tb 
= new ThreadB();
        
//用Runnable对象构造线程
        Thread threadB = new Thread(tb);
        threadB.start();
    }
    
    
public static void main(String[] args) {
        DefineThread test 
= new DefineThread();
        
//线程的运行具有不确定性,先启动的线程不一定先运行,取决于虚拟机。
        test.startA();
        test.startB();
    }
}



                                                                                                       --    学海无涯