【发布时间】:2018-06-22 21:27:31
【问题描述】:
下面的代码用于分形曼德布罗。它工作得很好,但现在我想在它上面使用线程的概念。结果应该是一样的,但工作必须由多个线程+10来完成。
这是我的代码:
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
public class test extends JFrame {
private final int MAX_ITER = 570;
private final double ZOOM = 150;
private BufferedImage I;
private double zx, zy, cX, cY, tmp;
private static int x,y;
public test() throws InterruptedException {
super("Mandelbrot Set");
setBounds(100, 100, 800, 600);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
I = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
for ( y = 0; y < getHeight(); y++) {
for ( x = 0; x < getWidth(); x++) {
Thread T = new Thread() {//*******
public void run() {
zx = zy = 0;
cX = (x - 400) / ZOOM;
cY = (y - 300) / ZOOM;
int iter = MAX_ITER;
while (zx * zx + zy * zy < 4 && iter > 0) {
tmp = zx * zx - zy * zy + cX;
zy = 2.0 * zx * zy + cY;
zx = tmp;
iter--;
}
I.setRGB(x, y, iter | (iter << 8));
System.out.println(Thread.currentThread().getId());
}
};//*******
T.start();//********
T.join();//**********
}
}
}
@Override
public void paint(Graphics g) {
g.drawImage(I, 0, 0, this);
}
public static void main(String[] args) throws InterruptedException {
new test().setVisible(true);
}
}
我试图在循环中实例化线程,但我没有得到我想要的结果 有什么建议吗?
【问题讨论】:
-
我没有看到与线程相关的代码,“我没有得到我想要的结果”不是问题。
-
这是没有线程的基本代码......我说我试图在循环中添加线程但我失败了所以我正在寻找添加这个线程的正确方法
-
向我们展示您如何尝试使用线程,也许我们可以告诉您您做错了什么。
-
我为你们编辑了代码,就像你看到的那样,我将它添加到那里以在每次迭代时创建一个线程,但它并没有停止,它什么也没有显示
-
见here关于
join
标签: java multithreading swing