重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
通常来说,多线程的并发及条件断点的debug是很难完成的,或许本篇文章会给你提供一个友好的调试方法。让你在多线程开发过程中的调试更加的有的放矢。
从策划到设计制作,每一步都追求做到细腻,制作可持续发展的企业网站。为客户提供成都网站设计、网站建设、网站策划、网页设计、域名与空间、网页空间、网络营销、VI设计、 网站改版、漏洞修补等服务。为客户提供更好的一站式互联网解决方案,以客户的口碑塑造优易品牌,携手广大客户,共同发展进步。我们将通过一个例子来学习。在这里,我编写了一个多线程程序来计算此数学问题:100! + 100000!
。即:100的阶乘 + 100000的阶乘。
数学不好的同学看这里,100 阶乘就是:1 * 2 * 3 * …… * 100 = ? ,简写为100!
import java.math.BigInteger; public class MathProblemSolver { //开启两个线程 public static void main(String arg[]){ //第一个线程计算 100! FactorialCalculatingThread thread1 = new FactorialCalculatingThread(100); //第二个线程计算 100000! FactorialCalculatingThread thread2 = new FactorialCalculatingThread(100000); thread1.setName("Thread 1"); thread2.setName("Thread 2"); thread1.start(); thread2.start(); try { thread1.join(); //线程Jion,以使主线程在“线程1”和“线程2”都返回结果之前不会进一步执行 thread2.join(); } catch (InterruptedException e) { e.printStackTrace(); } BigInteger result = thread1.getResult().add(thread2.getResult()); System.out.println("将两个线程的计算结果相加等于:" + result); } //用于阶乘计算的线程类 private static class FactorialCalculatingThread extends Thread { private BigInteger result = BigInteger.ONE; private long num; public FactorialCalculatingThread(long num) { this.num = num; } @Override public void run() { System.out.println(Thread.currentThread().getName() + " 开始阶乘的计算:" + num); factorialCalc(num); System.out.println(Thread.currentThread().getName() + "执行完成"); } //数的阶乘计算方法 public void factorialCalc(long num) { BigInteger f = new BigInteger("1"); for (int i = 2; i <= num; i++) f = f.multiply(BigInteger.valueOf(i)); result = f; } public BigInteger getResult() { return result; } } }