Java中 实现多线程成的三种方式(继承,实现,匿名内部类)
博客专区 > Jusenr 的博客 > 博客详情
Java中 实现多线程成的三种方式(继承,实现,匿名内部类)
Jusenr 发表于2年前
Java中 实现多线程成的三种方式(继承,实现,匿名内部类)
  • 发表于 2年前
  • 阅读 5
  • 收藏 0
  • 点赞 2
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

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

   

 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中的对象作为参数传递给Thread 10 
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中的对象作为参数传递给Thread 39         // 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  @Test 16     private static void Test3() { 17 
18     new Thread() { 19            public void run() { 20                 System.out.println("线程执行了。。。。。。。"); 21  } 22  }.start(); 23     }

 

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

共有 人打赏支持
粉丝 0
博文 20
码字总数 10876
×
Jusenr
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: