Java多线程:实现方式

在Java中, 多线程的实现有两种方式:
扩展java.lang.Thread类
实现java.lang.Runnable接口
方法1
[java] view plain copy print ?
  1. /** 
  2.  * @Description: 继承Thread类, 实现多线程. 
  3.  * @author snoopy 
  4.  * @blog http://blog.csdn.net/huang_xw 
  5.  */  
  6. package basic.a_start;  
  7.   
  8. import org.apache.log4j.Logger;  
  9.   
  10. public class TestThread extends Thread {  
  11.     private static Logger logger = Logger.getLogger(TestThread.class);  
  12.   
  13.     public static void main(String[] args) {  
  14.         TestThread test = new TestThread();  
  15.         logger.debug("在Main线程中启动线程!");  
  16.         test.start();  
  17.     }  
  18.       
  19.     public void run() {  
  20.         logger.debug("在线程中运行!");  
  21.     }  
  22. }  
方法2
[java] view plain copy print ?
  1. /** 
  2.  * @Description: 测试Runnable类实现的多线程程序 
  3.  * @author snoopy 
  4.  * @blog http://blog.csdn.net/huang_xw 
  5.  */  
  6. package basic.a_start;  
  7.   
  8. import org.apache.log4j.Logger;  
  9.   
  10. public class TestRunnable {  
  11.     private static Logger logger = Logger.getLogger(TestRunnable.class);  
  12.   
  13.     public static void main(String[] args) {  
  14.         // 1. 将任务处理代码移到实现了Runnable接口的类的run方法中。  
  15.         // 2. 创建任务类的一个对象  
  16.         // 3. 由Runnable创建Thread对象  
  17.         // 4. 启动线程  
  18.         ImpRunnable r1 = new ImpRunnable();  
  19.         ImpRunnable r2 = new ImpRunnable();  
  20.   
  21.         // 给线程命名有两种方式  
  22.         // 1.虚拟机命名 2.用Thread类的构造方法  
  23.         Thread t1 = new Thread(r1, "线程1");  
  24.         Thread t2 = new Thread(r2, "线程2");  
  25.   
  26.         t1.start();  
  27.         t2.start();  
  28.     }  
  29. }  
  30.   
  31. class ImpRunnable implements Runnable {  
  32.     private static Logger logger = Logger.getLogger(ImpRunnable.class);  
  33.   
  34.     // 当线程目标run()方法结束时该线程完成。  
  35.     public void run() {  
  36.         for (int i = 0; i < 10; i++) {  
  37.             // for循环用来模拟一个耗时的操作  
  38.             for (long k = 0; k < 100000000; k++)  
  39.                 ;  
  40.             // 获取当前线程的对象的方法是: Thread.currentThread()  
  41.             logger.debug(Thread.currentThread().getName() + " 运行" + ": 第" + i + "次");  
  42.         }  
  43.     }  
  44. }  



版权声明:本文为博主原创文章,未经博主允许不得转载。

你可能感兴趣的:(java,多线程)