Java 在多线程上-方法被调用两次
我刚开始学习线程,我正在尝试多线程。我不知道为什么method1()会被调用两次。感谢您的帮助。谢谢 我已经尽了最大努力,通过删除大量内容使示例变得简单/清晰Java 在多线程上-方法被调用两次,java,multithreading,Java,Multithreading,我刚开始学习线程,我正在尝试多线程。我不知道为什么method1()会被调用两次。感谢您的帮助。谢谢 我已经尽了最大努力,通过删除大量内容使示例变得简单/清晰 class A implements Runnable { public void method1() { System.out.println("Method1"); } public void methodThread(int numberOfThreads) { List<Thread>
class A implements Runnable {
public void method1() {
System.out.println("Method1");
}
public void methodThread(int numberOfThreads) {
List<Thread> threads = new ArrayList<Thread>();
for(int i=0; i<numberOfThreads; i++) {
Thread t = new Thread(this, "Thread - " +i);
t.start();
}
for(int i=0; i<numberOfThreads; i++) {
threads.get(i).join();
}
}
@Override
public void run() {
System.out.print(Thread.currentThread().getName() + this.method1());
}
public static void main(String[] args) {
A a = new A();
a.methodThread(1);
}
}
Expected output:
Thread - 0 Method1
Actual output
Method1 // Called again??
Thread - 0 Method1
A类实现可运行{
公共无效方法1(){
System.out.println(“方法1”);
}
公共void方法线程(int numberOfThreads){
List threads=new ArrayList();
对于(int i=0;i您的方法method1()执行实际输出,这发生在从run方法打印值之前。但是,看起来您正在尝试将返回值(在代码中可能是“method1”)添加到线程名称中:
System.out.print(Thread.currentThread().getName() + this.method1());
这将导致您看到的行为。您的方法method1()执行实际输出,并且在从run方法打印值之前发生。但是,看起来您正在尝试将返回值(在代码中可能是“method1”)添加到线程名称中:
System.out.print(Thread.currentThread().getName() + this.method1());
这将导致您看到的行为。这不会编译--方法method1
或methodThread
没有返回类型。在method1()内添加断点并检查调用堆栈。我只是尝试放置sudo代码:/This仍然无法通过编译。This无法编译-method1
或methodThread
方法没有返回类型。在method1()内添加断点检查调用堆栈。我只是想把sudo代码放进去:/这仍然不能通过编译。我再次打印了值。谢谢。我再次打印了值。谢谢