黑马程序员技术交流社区

标题: 谁会做这个题目啊? [打印本页]

作者: 华子    时间: 2014-6-16 23:55
标题: 谁会做这个题目啊?
有四个线程1、2、3、4。线程1的功能就是输出A,线程2的功能就是输出B,以此类推......... 现在有四个文件file1,file2,file3, file4。初始都为空。
现要让四个文件呈如下格式:
file1:A B C D A B....
file2:B C D A B C....
file3:C D A B C D....
file4:D A B C D A....

作者: 来自沙沙的我    时间: 2014-6-17 14:41
  1. import java.io.*;
  2. class AA implements Runnable
  3. {
  4.         private rr r;
  5.         AA(rr r)
  6.         {
  7.                 this.r=r;
  8.         }
  9.         public void run()
  10.         {
  11.                 synchronized(r){
  12.                        
  13.                         try
  14.                         {
  15.                                 if(r.tt!=1)
  16.                                 {r.wait();}else{
  17.                                         FileWriter out=new FileWriter("d:/file1.txt",true);
  18.                                         out.write("A");
  19.                                         r.tt=2;
  20.                                         out.close();
  21.                                         r.notifyAll();
  22.                                        
  23.                                 }
  24.                         }catch(Exception e){};
  25.                        
  26.                 }
  27.         }
  28. }
  29. class BB implements Runnable
  30. {
  31.         private rr r;
  32.         BB(rr r)
  33.         {
  34.                 this.r=r;
  35.         }
  36.         public void run()
  37.         {
  38.                 synchronized(r){
  39.                        
  40.                         try
  41.                         {
  42.                                 if(r.tt!=2)
  43.                                 {r.wait();}else{
  44.                                         FileWriter out=new FileWriter("d:/file1.txt",true);
  45.                                         out.write("B");
  46.                                         r.tt=3;
  47.                                         out.close();
  48.                                         r.notifyAll();
  49.                                        
  50.                                 }
  51.                         }catch(Exception e){};
  52.                 }
  53.         }
  54. }
  55. class CC implements Runnable
  56. {
  57.         private rr r;
  58.         CC(rr r)
  59.         {
  60.                 this.r=r;
  61.         }
  62.         public void run()
  63.         {
  64.                
  65.        
  66.                 synchronized(r){
  67.                        
  68.                         try
  69.                         {
  70.                                 if(r.tt!=3)
  71.                                 {r.wait();}else{
  72.                                         FileWriter out=new FileWriter("d:/file1.txt",true);
  73.                                         out.write("C");
  74.                                         r.tt=4;
  75.                                         out.close();
  76.                                         r.notifyAll();
  77.                                 }
  78.                         }catch(Exception e){};
  79.                 }
  80.         }
  81. }
  82. class DD implements Runnable
  83. {
  84.         private rr r;
  85.         DD(rr r)
  86.         {
  87.                 this.r=r;
  88.         }
  89.         public void run()
  90.         {
  91.                 synchronized(r){
  92.                        
  93.                         try
  94.                         {
  95.                                 if(r.tt!=4)
  96.                                 {r.wait();}else{
  97.                                         FileWriter out=new FileWriter("d:/file1.txt",true);
  98.                                         out.write("D");
  99.                                         r.tt=1;
  100.                                         out.close();
  101.                                         r.notifyAll();
  102.                                 }
  103.                         }catch(Exception e){};
  104.                 }
  105.         }
  106. }
  107. class rr
  108. {
  109.          int tt=1;
  110. }
  111. public class dfdfds {
  112.         public static void main(String[] args)
  113.         {
  114.                 rr r=new rr();
  115.                 new Thread(new AA(r)).start();
  116.                 new Thread(new BB(r)).start();
  117.                 new Thread(new CC(r)).start();
  118.                 new Thread(new DD(r)).start();
  119.         }
  120. }
复制代码


我写了个file1的,其它的照写就是了,不过我的方法复杂了点,不知道还有没有简单的。
作者: 华子    时间: 2014-6-17 21:03
这样的方法扩展性就不行了,




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