[置顶]Java中 实现多线程成的三种方式(继承,实现,匿名内部类)

来源:互联网 发布:linux配置网络 编辑:程序博客网 时间:2024/05/29 18:38
------------------------------------------------------------------------------------------------------------    

   

 1  /**  第一种方式:继承Thread类 2  3     *             1. 定义一个类,然后让该类继承Thread类 4  5     *             2. 重写run方法 6  7     *             3. 创建定义的这个类的对象 8  9     *             4. 启动线程10 11     */12 13  //继承Thread类14 15   public class MyThread extends Thread{16     17     public MyThread() {}18 19     public MyThread(String name) {20         super(name);21     }22 23     //run方法中封装的应该是要被线程执行的代码 ,run方法中代码的原则,一般存方的都是比较耗时的代码24     public void run (){25         26         for (int i = 0; i < 200; i++) {27             28             System.out.println(Thread.currentThread().getName() + "---" + i);29         }30     } 31 }32 33   //测试方法34 35   private static void Test() {36 37    // 创建对象38         MyThread mt1 = new MyThread();39         MyThread mt2 = new MyThread();40 41 42         //启动线程43         // public void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。44         mt1.start();45         //mt1.start();// 线程的启动只能是一次46         mt2.start();47 48   }

 

------------------------------------------------------------------------------------------------------------

 

 1  /**  第二种方式:实现Runnable接口 2      避免了单线程带来的困扰 3      *    (1): 创建一个类,让该类实现Runnable接口 4  5      *    (2): 重写run方法 6  7      *    (3): 创建该类的对象 8  9      *    (4): 创建Thread类的对象,然后把3中的对象作为参数传递给Thread10 11      *    (5): 启动线程12 13      */14 15   //实现Runnable接口16 17   public class MyThread2 implements Runnable {18    19     public MyThread2() {20         super();21       }22 23       public void run() {24         25           for(int x = 0 ; x < 200 ; x++){26             27              System.out.println(Thread.currentThread().getName() + "---" + x);28         }29     }30 }31 32   //测试方法33 34     private static void Test2() {35 36      // 创建MyThread的对象37         MyThread2 mt = new MyThread2();38         // 创建Thread类的对象,然后把3中的对象作为参数传递给Thread39         // public Thread(Runnable target)40         Thread t1 = new Thread(mt,"张飞");41         Thread t2 = new Thread(mt,"关羽");42         Thread t3 = new Thread(mt,"刘备");43         // 启动线程44         t1.start() ;45         t2.start() ;46         t3.start() ;47     }

 

------------------------------------------------------------------------------------------------------------

  

 1  /**  第三种方式:使用匿名内部类的方式实现 2     很少见 3      *    new 类名/接口名() {       4  5      *      方法重写 ; 6  7      *    } ; 8  9      */10 11  //测试方法12 13  //匿名内部类14 15     @Test16     private static void Test3() {17 18     new Thread() {19            public void run() {20                 System.out.println("线程执行了。。。。。。。");21             }22         }.start();23     }

 

------------------------------------------------------------------------------------------------------------

0 0
原创粉丝点击