【发布时间】:2017-05-08 19:44:47
【问题描述】:
下面是我的代码。我期望 t1 和 t2 应该并行运行,但是在 t1 完成后, t2 开始了。我做错什么了吗。实际上,我正在尝试复制生产者和消费者的问题,但有些地方我弄得一团糟。
import java.util.ArrayList;
import java.util.List;
public class BankThread {
static List<String> amount = new ArrayList<String>();
public static void main(String[] args) {
Deposit dep = new Deposit();
WithDraw wDraw = new WithDraw();
Thread t1 = new Thread(dep);
Thread t2 = new Thread(wDraw);
t1.start();
t2.start();
}
}
class Deposit extends BankThread implements Runnable {
public void run(){
for (int i = 1; i < 10; i++) {
amount.add(""+(i*100));
System.out.println("Deposit #" + i
+ " put: " + i);
try {
Thread.sleep((int)(1000));
} catch (InterruptedException e) { }
}
}
}
class WithDraw extends BankThread implements Runnable{
public void run(){
System.out.println("In withdraw"+amount.size());
try {
for (int i = 0; i< amount.size(); i++) {
System.out.println("Withdraw #" + amount.get(i)
+ " removed " + amount.remove(i));
Thread.sleep((int)(1000));
}} catch (InterruptedException e) { }
}
}
【问题讨论】:
-
请阅读 Jenkov 多线程教程tutorials.jenkov.com/java-concurrency/index.html
-
@somashaker, beginnersbook.com/2013/03/multithreading-in-java
-
感谢角斗士和 sharathkumar
-
您能否为这个问题提出更具描述性的标题?
标签: java multithreading concurrency