黑马程序员技术交流社区
标题:
多线程通信---学得懵懵的:L
[打印本页]
作者:
boycechan
时间:
2014-12-15 23:19
标题:
多线程通信---学得懵懵的:L
class Storage
{
//数据存储数组
private int[] cells=new int[10];
//inPos表示存入时数组下标,outPos表示取出时数组下标
private int inPos,outPos;
//定义一个put()方法向数组中存入数据
public void put(int num)
{
cells[inPos]=num;
System.out.println("在cells["+inPos+"]中放入数据---"+cells[inPos]);
inPos++; //存完元素让位置加1
if(inPos==cells.length)
{
inPos=0; //当inPos为数组长度时,将其置为0
}
}
public void get()
{
int data=cells[outPos];
System.out.println("从cells["+outPos+"]中取出数据"+data);
outPos++; //取完元素让位置加1
if (outPos==cells.length)
{
outPos=0;
}
}
}
class Input implements Runnable //输入线程类
{
private Storage st;
private int num; //定义一个变量num
Input(Storage st) //通过构造方法接收一个Storage对象
{
this.st=st;
}
public void run()
{
while(true)
{
st.put(num++); //将num存入数组,每次存入后num自增
}
}
}
class Output implements Runnable //输出线程类
{
private Storage st;
Output(Storage st) //通过构造方法接收一个Storage对象
{
this.st=st;
}
public void run()
{
while(true)
{
st.get(); //循环取出元素
}
}
}
public class Example17
{
public static void main(String[] args)
{
Storage st=new Storage(); //创建数据存储对象
Input input=new Input(st); //创建Input对象传入Storage对象
Output output=new Output(st); //创建Output对象传入Storage对象
new Thread(input).start(); //开启新线程
new Thread(output).start(); //开启新线程
}
}
复制代码
作者:
清诗纪事
时间:
2014-12-16 18:51
我觉得这个主要是要结合例子理解的,也算是一种思想吧,就是把本来只能一个人一个人做的事情,现在多个人在不产生安全问题的前提下可以同时做吧。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2