线程间通信:生产线程和消费线程
2016-05-05 18:46
197 查看
线程间通信:生产线程和消费线程
public
classStudent {
Stringname;
int
age;
}
public
classSetThread implementsRunnable {
private Student
s;
public SetThread(Student s) {
this.s = s;
}
@Override
public
void run() {
// Student s = new Student();
s.name =
"张三";
s.age = 21;
}
}
public
classGetThread implementsRunnable {
private Student
s;
public GetThread(Student s) {
this.s = s;
}
@Override
public
void run() {
// Student s = new Student();
System.out.println(s.name +
"---" + s.age);
}
}
/*
* 分析:
* 资源类:Student
* 设置学生数据:SetThread(生产者)
* 获取学生数据:GetThread(消费者)
* 测试类:StudentDemo
*
* 问题1:按照思路写代码,发现数据每次都是:null---0
* 原因:我们在每个线程中都创建了新的资源,而我们要求的时候设置和获取线程的资源应该是同一个
* 如何实现呢?
* 在外界把这个数据创建出来,通过构造方法传递给其他的类。
*
*/
public
classStudentDemo {
public
static void main(String[] args) {
//创建资源
Students = newStudent();
//设置和获取的类
SetThreadst = newSetThread(s);
GetThreadgt = newGetThread(s);
//线程类
Threadt1 = newThread(st);
Threadt2 = newThread(gt);
//启动线程
t1.start();
t2.start();
}
}
public
classStudent {
Stringname;
int
age;
}
public
classSetThread implementsRunnable {
private Student
s;
public SetThread(Student s) {
this.s = s;
}
@Override
public
void run() {
// Student s = new Student();
s.name =
"张三";
s.age = 21;
}
}
public
classGetThread implementsRunnable {
private Student
s;
public GetThread(Student s) {
this.s = s;
}
@Override
public
void run() {
// Student s = new Student();
System.out.println(s.name +
"---" + s.age);
}
}
/*
* 分析:
* 资源类:Student
* 设置学生数据:SetThread(生产者)
* 获取学生数据:GetThread(消费者)
* 测试类:StudentDemo
*
* 问题1:按照思路写代码,发现数据每次都是:null---0
* 原因:我们在每个线程中都创建了新的资源,而我们要求的时候设置和获取线程的资源应该是同一个
* 如何实现呢?
* 在外界把这个数据创建出来,通过构造方法传递给其他的类。
*
*/
public
classStudentDemo {
public
static void main(String[] args) {
//创建资源
Students = newStudent();
//设置和获取的类
SetThreadst = newSetThread(s);
GetThreadgt = newGetThread(s);
//线程类
Threadt1 = newThread(st);
Threadt2 = newThread(gt);
//启动线程
t1.start();
t2.start();
}
}
相关文章推荐
- Swift iOS实现把PCM语音转成MP3格式
- getgrent
- 053(六十三)
- LINUX信号
- design support library八大模块
- 【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位网友补充完善
- 053(六十二)
- 含重复字符的字符串的全排列问题(Java)
- LaTeX新人教程,30分钟从完全陌生到基本入门
- Python3 venv 创建虚拟环境
- 今天要说的是adapter.Fill(DataSet)中缺参数的问题
- 改变select里option的文字方向
- Python3爬取ACM近期比赛数据并写入Excel文档
- shareSDK.js web版的使用
- 053(六十一)
- TabLayout简单使用
- 动态规划和贪心
- PHP初级学习——运算符篇
- Java的常用组件
- 【HUSTOJ】1052: 字符图形8-数字三角