在多线程环境中,我们往往会遇到一些棘手的问题,怎么规定合适的线程顺序进行调试?怎么能让线程按照自己的想法执行?下面我们讲解一下解决方法。(本博客使用Eclipse,Idea工具也有对应的方式就不做赘述了)
代码(仅两个类进行演示)
package com.debug;
public class DebugRunning implements Runnable {
private String context;
public DebugRunning(String context) {
this.context = context;
}
@Override
public void run() {
System.out.println("线程调试:线程名称:" + Thread.currentThread().getName() + ", 为希望而战:" + context);
}
}
package com.debug;
public class DebugMain {
public static void main(String[] args) {
DebugRunning running1 = new DebugRunning("主宰降临!");
DebugRunning running2 = new DebugRunning("大王饶命!");
Thread bug1 = new Thread(running1);
Thread bug2 = new Thread(running2);
bug1.setName("Thread A");
bug2.setName("Thread B");
bug1.start();
bug2.start();
System.out.println("斯巴达");
}
}
结果1:
斯巴达
线程调试:线程名称:Thread B, 为希望而战:大王饶命!
线程调试:线程名称:Thread A, 为希望而战:主宰降临!
结果2:
斯巴达
线程调试:线程名称:Thread A, 为希望而战:主宰降临!
线程调试:线程名称:Thread B, 为希望而战:大王饶命!
结果3:
线程调试:线程名称:Thread A, 为希望而战:主宰降临!
线程调试:线程名称:Thread B, 为希望而战:大王饶命!
斯巴达
通过该段代码示例,不难看出其执行结果并没有一定的顺序,那么问题来了,如果我们想通过Debug调试,让main线程先完成执行(斯巴达),再让Thread A完成执行,之后让Thread B完成执行该如何做?
调试(上图)
图一:
图二:
图三:
图四:
图五:
图六:
OK,到这就结束了!