[英]Java - Make threads concurrent
我如何使线程并发执行? 我有下面的代码。 进程T.Create(mt); 在c.Consume(mt)甚至开始之前就完成了其全部任务。 我在T.Create(mt)中放置了一个睡眠函数; 函数,但是c.Consume(mt)直到完全完成后仍然不会启动。 我试图通过创建过程将对象添加到堆中,并通过使用过程将对象从堆中删除,以使它们彼此撤销。
package javaapplication2;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Level;
import java.util.logging.Logger;
public class JavaApplication2 {
public static void main(String[] args) {
NewThread T = new NewThread();
T.start();
NewThread c = new NewThread();
c.start();
MinHeap mt = new MinHeap(50);
T.Create(mt);
c.Consume(mt);
}
class NewThread extends Thread
{
NewThread()
{
}
public void run(MinHeap minHeap)
{
}
public void Create(MinHeap minHeap)
{
Random rand = new Random();
int randNum = rand.nextInt(40) + 1;
System.out.println("num = " + randNum);
int i =0;
Node n = new Node();
n.setID(randNum);
minHeap.first(n);
while (minHeap.getSize() < 15)
{
n = new Node();
randNum = rand.nextInt(40) + 1;
n.setID(randNum);
minHeap.insert(n);
System.out.print("Input: " + randNum + " Heap = ");
minHeap.print();
try{Thread.sleep(800);}catch(Exception e){}
}
minHeap.print();
minHeap.remove();
System.out.println("========= size = " + minHeap.getSize());
minHeap.print();
}
public void Consume(MinHeap minHeap)
{
while (minHeap.getSize() > 0)
{
System.out.print("Consume - Heap = ");
minHeap.remove();
minHeap.print();
try{Thread.sleep(800);}catch(Exception e){}
}
}
}
首先,最好发布可以在其他任何人的计算机上运行的代码(以最少的代码量),以便我们有更好的时间调试您的问题。
这些链接可能会有所帮助:
您需要在线程的run()
方法内执行Create()
和Consume
方法。 因为现在以通常的串行方式调用T.Create()
和c.consume()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.