我正在编写一个小代码,它使用线程使用 Jama 和 svd() 方法从矩阵 A 访问矩阵 U、S 和 V,但我面临着 Java Null 指针异常等困难。我的代码是这样的:
public class SVD implements Runnable
{
private Thread t;
public Matrix A;
public int option;
public Matrix result;
public SVD(Matrix A, int optiune)
{
this.A = A;
this.option = optiune;
}
@Override
public void run()
{
if (option == 1)
result = A.svd().getU();
if(option ==2)
result=A.svd().getS();
if(option ==3)
result=A.svd().getV();
}
public void start()
{
if (t == null)
{
t = new Thread(this);
t.start();
}
}
}
现在,当我尝试像这样创建 3 个 SVD 对象时:
Matrix A = Matrix.random(20, 20);
SVD a1 = new SVD(A, 1);
SVD a2 = new SVD(A, 2);
SVD a3 = new SVD(A, 3);
a1.start();
a2.start();
a3.start();
Matrix U=a1.result;
最后一行是得到错误的行。什么可能导致问题?这是我错过的东西吗?
PS:抱歉格式化我不知道为什么会这样!