编写一个有两个线程的程序,第一个线程用来计算2~100000之间的素数的个数,
第二个线程用来计算100000~200000之间的素数的个数,最后输出结果。
代码实现:
package com.thread; public class SuShuDemo1 extends Thread{ private long suCount = 0; public boolean flag = false; public long getSuCount() { return suCount; } @Override public void run() { for (long i=2;i<=100000;i++){ for (long j=2;j<=Math.sqrt(i);j++){ if (i%j==0){ flag=true; break; } } if (flag==false){ this.suCount++; } flag=false; } System.out.println(Thread.currentThread().getName()+"素数一共有"+getSuCount()+"个"); } }
package com.thread; public class SuShuDemo2 implements Runnable { private long suShuCount2 = 0; public long getSuShuCount2() { return suShuCount2; } @Override public void run() { for (long i =100000;i<=200000;i++){ long j =0; for (j =2;j<=i;j++){ if (i%j==0){ break; } } if (i==j){ this.suShuCount2++; } } System.out.println(Thread.currentThread().getName()+"素数一共有"+getSuShuCount2()+"个"); } }
package com.thread; public class SuShuDemo1Test { public static void main(String[] args) { SuShuDemo1 suShuDemo1 = new SuShuDemo1(); SuShuDemo2 suShuDemo2 = new SuShuDemo2(); Thread thread = new Thread(suShuDemo2); suShuDemo1.start(); thread.start(); } }
运行结果:
Thread-0素数一共有9592个 Thread-1素数一共有8392个