请点击本文目录
模拟的问题代码ThreadJoin.javaTest.java
测试结果
模拟的问题
在主线程中再创建3个线程:“运货司机”、“装运工”和“仓库管理员”。要求线程“运货司机”占有CPU资源后立刻联合线程“装运工”,也就是让“运货司机”一直等到“装运工”完成工作才能开车,而“装运工”占有CPU资源后立刻联合线程“仓库管理员”,也就是让“装运工”一直等到“仓库管理员"打开仓库才能开始搬运货物。
代码
ThreadJoin.java
package thread
;
public class ThreadJoin implements Runnable{
Thread joinThreadMover
;
Thread joinThreadManager
;
public void setJoinThreadMover(Thread t
){
joinThreadMover
= t
;
}
public void setJoinThreadManger(Thread t
){
joinThreadManager
= t
;
}
@Override
public void run() {
if(Thread
.currentThread().getName().equals("货运司机")){
try{
System
.out
.println("货运司机等待搬运工搬运货物......");
Thread
.sleep(2000);
joinThreadMover
.start();
joinThreadMover
.join();
Thread
.sleep(2000);
System
.out
.println("货运司机准备出发......");
}
catch(InterruptedException e
){
System
.out
.println(e
);
}
}
else if(Thread
.currentThread().getName().equals("搬运工")){
try{
System
.out
.println("搬运工等待仓库管理员打开仓库门......");
Thread
.sleep(2000);
joinThreadManager
.start();
joinThreadManager
.join();
Thread
.sleep(2000);
System
.out
.println("搬运工已搬运完......");
}
catch(InterruptedException e
){
System
.out
.println(e
);
}
}
else if(Thread
.currentThread().getName().equals("仓库管理员")){
try{
System
.out
.println("仓库管理员正在打开仓库门......");
Thread
.sleep(2000);
System
.out
.println("仓库门已打开......");
}
catch(InterruptedException e
){
System
.out
.println(e
);
}
}
}
}
Test.java
package thread
;
public class Test {
public static void main(String
[] args
) {
ThreadJoin a
= new ThreadJoin();
Thread driver
= new Thread(a
);
Thread mover
= new Thread(a
);
Thread manager
= new Thread(a
);
driver
.setName("货运司机");
mover
.setName("搬运工");
manager
.setName("仓库管理员");
a
.setJoinThreadMover(mover
);
a
.setJoinThreadManger(manager
);
driver
.start();
}
}
测试结果
货运司机等待搬运工搬运货物......
搬运工等待仓库管理员打开仓库门......
仓库管理员正在打开仓库门......
仓库门已打开......
搬运工已搬运完......
货运司机准备出发......