黑马程序员技术交流社区

标题: 多线程的一些总结 [打印本页]

作者: yangkai69    时间: 2015-8-21 16:33
标题: 多线程的一些总结
  系统运行程序,叫进程,程序运行数据时,叫线程,一个电脑可以同时运行多个程序,同样一个程序可以同时运行多个线程,一个程序同时运行多个线程的技术,叫做多线程技术。
多线程有两种实现方式,第一种是继承Thread类,另一种是实现runnable接口。
下面我以一个例子来说明:
  1. /**
  2. * 功能:多线程的一些总结,以下列题目作为说明
  3. * 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,
  4. * 要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
  5. *
  6. */

  7. package myblog;

  8. public class DuoXianCheng {
  9.         public static int k=1;
  10.         public static void addk()
  11.         {
  12.                 if(k==3)
  13.                 {
  14.                         k=1;
  15.                 }else{
  16.                         k++;
  17.                 }
  18.         }
  19.    
  20.         public static void main(String[] args) {
  21.                 printA a=new printA();
  22.                 printB b=new printB();
  23.                 printC c=new printC();
  24.                
  25.                 Thread t1=new Thread(b);
  26.                 Thread t2=new Thread(c);
  27.                
  28.                 a.start();
  29.                 t1.start();
  30.                 t2.start();
  31.                
  32.    
  33.         }

  34. }

  35. class printA extends Thread
  36. {
  37.      public void run() {
  38.                 for(int i=0;i<10;i++)
  39.                 {
  40.                         if(DuoXianCheng.k==1)
  41.                         {
  42.                         System.out.println(" A ");
  43.                         DuoXianCheng.addk();
  44.                         }else{
  45.                                 try {
  46.                                         sleep(10);
  47.                                         i--;
  48.                                 } catch (InterruptedException e) {
  49.                                         // TODO Auto-generated catch block
  50.                                         e.printStackTrace();
  51.                                 }
  52.                         }
  53.                 }
  54.                
  55.         }
  56.        
  57. }


  58. class printB implements Runnable
  59. {
  60.         public void run() {
  61.                 for(int i=0;i<10;i++)
  62.                 {
  63.                         if(DuoXianCheng.k==2)
  64.                         {
  65.                         System.out.println(" B ");
  66.                         DuoXianCheng.addk();
  67.                         }else{
  68.                                 try {
  69.                                         Thread.sleep(10);
  70.                                         i--;
  71.                                 } catch (InterruptedException e) {
  72.                                         // TODO Auto-generated catch block
  73.                                         e.printStackTrace();
  74.                                 }
  75.                         }
  76.                 }       
  77.         }
  78.        
  79. }

  80. class printC implements Runnable
  81. {
  82.         public void run() {
  83.                 for(int i=0;i<10;i++)
  84.                 {
  85.                         if(DuoXianCheng.k==3)
  86.                         {
  87.                         System.out.println(" C ");
  88.                         DuoXianCheng.addk();
  89.                         }else{
  90.                                 try {
  91.                                         Thread.sleep(10);
  92.                                         i--;
  93.                                 } catch (InterruptedException e) {
  94.                                         // TODO Auto-generated catch block
  95.                                         e.printStackTrace();
  96.                                 }
  97.                         }
  98.                 }
  99.                
  100.                
  101.         }
  102.        
  103. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2