WEB开发网
开发学院WEB开发Jsp 攻克学习多线程时碰到的难题 阅读

攻克学习多线程时碰到的难题

 2008-01-05 20:07:30 来源:WEB开发网   
核心提示: 接触多线程已经不少时间了,也做了不少事情,但是一直觉得用起来不那么顺手,在debug的时候,往往会比较担心在同步上出什么问题,想起"程序员最怕的是自己写的代码"这句话,觉得真是不假.

   接触多线程已经不少时间了,也做了不少事情,但是一直觉得用起来不那么顺手,在debug的时候,往往会比较担心在同步上出什么问题,想起"程序员最怕的是自己写的代码"这句话,觉得真是不假.
   终于有一天,我觉得是时候把这个问题弄清楚了,所以,我就在网上找相关的内容看,结果竟然是找不到在我这个阶段应该看的,不是太简单,就是一笔带过,不知所云.
   废了九牛二虎之力,终于差不多弄清楚了,其中有不少误区,以前认为的和真理相差甚大.想起自己花费的时间,真是觉得有点多,所以把它写出来,一是防止自己以后又会忘掉,二是给像我一样的似懂非懂者留下一点可以参考的东东.
   闲话少说,转入正题!
  ---------------------------------
   先从线程的创建说起.线程的创建一共有两种形式:
  ---------------------------------

   一种是继续自Thread类.Thread 类是一个具体的类,即不是抽象类,该类封装了线程的行为。要创建一个线程,程序员必须创建一个从 Thread 类导出的新类。程序员通过覆盖 Thread 的 run() 函数来完成有用的工作。用户并不直接调用此函数;而是通过调用 Thread 的 start() 函数,该函数再调用 run()。
  
   例如:

   public class Test extends Thread{
    public Test(){
    }
    public static void main(String args[]){
     Test t1 = new Test();
     Test t2 = new Test();
     t1.start();
     t2.start();
    }
    public void run(){
     //do thread's things
    }
   }

----------------------------
  
   另一种是实现Runnable接口,此接口只有一个函数,run(),此函数必须由实现了此接口的类实现。
  
   例如:


 

进入讨论组讨论。

   public class Test implements Runnable{
    Thread thread1;
    Thread thread2;
    public Test(){
     thread1 = new Thread(this,"1");
     thread2 = new Thread(this,"2");
    }
    public static void main(String args[]){
     Test t = new Test();

Tags:攻克 学习 多线

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接