通常來說,多線程的并發(fā)及條件斷點的debug是很難完成的,或許本篇文章會給你提供一個友好的調(diào)試方法。讓你在多線程開發(fā)過程中的調(diào)試更加的有的放矢。
從策劃到設(shè)計制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁設(shè)計、域名與空間、網(wǎng)頁空間、網(wǎng)絡(luò)營銷、VI設(shè)計、 網(wǎng)站改版、漏洞修補等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。我們將通過一個例子來學(xué)習(xí)。在這里,我編寫了一個多線程程序來計算此數(shù)學(xué)問題:100! + 100000!
。即:100的階乘 + 100000的階乘。
數(shù)學(xué)不好的同學(xué)看這里,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”都返回結(jié)果之前不會進(jìn)一步執(zhí)行 thread2.join(); } catch (InterruptedException e) { e.printStackTrace(); } BigInteger result = thread1.getResult().add(thread2.getResult()); System.out.println("將兩個線程的計算結(jié)果相加等于:" + 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() + "執(zhí)行完成"); } //數(shù)的階乘計算方法 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; } } }