Java多线程编程

Java多线程编程,java,Java,我是一名Java编程初学者。我不知道如何更正下面的Java程序。请帮助让我知道如何纠正它。非常感谢 公共类TMA1Q2{ public static void main(String[] args) { System.out.println("Usage: java TMA1Q2 {number of Threads}"); // Create tasks Runnable taskA = new PrintTwoConcurThreads("Thread A ");

我是一名Java编程初学者。我不知道如何更正下面的Java程序。请帮助让我知道如何纠正它。非常感谢

公共类TMA1Q2{

public static void main(String[] args) {
    System.out.println("Usage: java TMA1Q2 {number of Threads}");

    // Create tasks
    Runnable taskA = new PrintTwoConcurThreads("Thread A ");
    Runnable taskB = new PrintTwoConcurThreads("            Thread B ");

    // Create threads
    Thread thread1 = new Thread(taskA);
    Thread thread2 = new Thread(taskB);

    // Start threads
    thread1.start();
    thread2.start();
}
}

//实现Runnable的任务

class PrintTwoConcurThreads implements Runnable {

private final String TwoConcurThreads;
private String[] args;

public PrintTwoConcurThreads(String numThreads) {
    TwoConcurThreads = numThreads;
}

// Override the run() method
@Override
public void run() {
    // Print the value input argument times
    int numThreads = Integer.parseInt(args[0]);
    Thread[] myThread;
    myThread = new Thread[numThreads];
    for (int i = 0; i < numThreads; i++) {
        System.out.println(TwoConcurThreads + i);
    }
}
}
类PrintTwoConcurThreads实现可运行{
私有最终字符串线程;
私有字符串[]args;
公共PrintTwoConcurThreads(字符串numThreads){
TwoConcurThreads=numThreads;
}
//重写run()方法
@凌驾
公开募捐{
//打印输入参数次的值
int numThreads=Integer.parseInt(args[0]);
线程[]读取;
myThread=新线程[numThreads];
for(int i=0;i
args
字段从未初始化,因此其默认值为
null

当您尝试在下面的行中访问它时,您会得到一个
NullPointerException

int numThreads = Integer.parseInt(args[0]);

不清楚你想做什么。至少这会帮助你了解出了什么问题

我也不知道为什么要使用下面的行,您创建了
Thread[]
,但从未使用过它

Thread[] myThread;
myThread = new Thread[numThreads];

不清楚你想做什么。我可以看到
Thread[]
是无用的。请在调试后查看问题:用法:线程“Thread-0”java.lang.NullPointerException在PrintTwoConcurThreads.run(TMA1Q2.java:38)在java.lang.Thread.run(Thread.java:744)线程“Thread-1”中异常printTwoConcurtThreads.run处的java.lang.NullPointerException(TMA1Q2.java:38)java.lang.Thread.run处的java.lang.NullPointerException(Thread.java:744)生成成功(总时间:0秒)我想编写一个包含两个并发线程的程序。这两个线程分别在屏幕上写入“Thread A X”和“Thread B X”,其中X取从0到n-1的连续值,其中n是用于运行程序的参数。谢谢。你好@user3079494,编辑问题;包括您收到的错误以及您试图实现的目标。这将使人们更容易帮助你,并使这个问题对未来的读者更有用。谢谢你的建议。是的,我也不知道,因为我是一个新的学习者,只是从一本参考书上读来尝试。谢谢。实际上,我试着写一个有两个并发线程的程序。这两个线程分别在屏幕上写入“Thread A X”和“Thread B X”,其中X取从0到n-1的连续值,其中n是用于运行程序的参数。非常感谢。输出屏幕如下所示:线程A 0线程B 0线程A 1线程A 2线程B 1线程A 3线程B 2线程A 4线程B 3线程B 4线程A 5线程B 5请尝试以下程序。它可以工作,但我不知道如何使用用于运行程序的参数。
Thread[] myThread;
myThread = new Thread[numThreads];