A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© boycechan 中级黑马   /  2014-12-15 23:19  /  1011 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Storage
  2. {
  3.         //数据存储数组
  4.         private int[] cells=new int[10];
  5.         //inPos表示存入时数组下标,outPos表示取出时数组下标
  6.         private int inPos,outPos;
  7.         //定义一个put()方法向数组中存入数据
  8.         public void put(int num)
  9.         {
  10.                 cells[inPos]=num;
  11.                 System.out.println("在cells["+inPos+"]中放入数据---"+cells[inPos]);
  12.                 inPos++;  //存完元素让位置加1
  13.                 if(inPos==cells.length)
  14.                 {
  15.                         inPos=0;  //当inPos为数组长度时,将其置为0
  16.                 }               
  17.         }

  18.         public void get()
  19.         {
  20.                 int data=cells[outPos];
  21.                 System.out.println("从cells["+outPos+"]中取出数据"+data);
  22.                 outPos++;  //取完元素让位置加1
  23.                 if (outPos==cells.length)
  24.                 {
  25.                         outPos=0;
  26.                 }
  27.         }
  28. }


  29. class Input implements Runnable   //输入线程类
  30. {
  31.         private Storage st;
  32.         private int num;    //定义一个变量num
  33.         Input(Storage st)   //通过构造方法接收一个Storage对象
  34.         {
  35.                 this.st=st;
  36.         }

  37.         public void run()
  38.         {
  39.                 while(true)
  40.                 {
  41.                         st.put(num++);    //将num存入数组,每次存入后num自增
  42.                 }
  43.         }
  44. }

  45. class Output implements Runnable  //输出线程类
  46. {
  47.         private Storage st;
  48.         Output(Storage st)   //通过构造方法接收一个Storage对象
  49.         {
  50.                 this.st=st;
  51.         }

  52.         public void run()
  53.         {
  54.                 while(true)
  55.                 {
  56.                         st.get();  //循环取出元素
  57.                 }
  58.         }
  59. }

  60. public class Example17
  61. {
  62.         public static void main(String[] args)
  63.         {
  64.                 Storage st=new Storage();  //创建数据存储对象
  65.                 Input input=new Input(st);  //创建Input对象传入Storage对象
  66.                 Output output=new Output(st); //创建Output对象传入Storage对象
  67.                 new Thread(input).start();  //开启新线程
  68.                 new Thread(output).start(); //开启新线程
  69.         }
  70. }
复制代码


1 个回复

倒序浏览
我觉得这个主要是要结合例子理解的,也算是一种思想吧,就是把本来只能一个人一个人做的事情,现在多个人在不产生安全问题的前提下可以同时做吧。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马