class LoadDown implements Runnable{ static double num=0; static double n1 =0; static double n2 =0; static double n3 =0; static double n4 =0; public void run(){ while(true){ synchronized ("锁") { if (num<=500) { try { Thread.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(Thread.currentThread().getName().equals("下载线程一")){ n1 +=1; }else if (Thread.currentThread().getName().equals("下载线程二")) { n2 +=1; }else if(Thread.currentThread().getName().equals("下载线程三")) { n3 +=1; }else if(Thread.currentThread().getName().equals("下载线程四")) { n4 +=1; } System.out.println(Thread.currentThread().getName()+"已下载"+(num/500)*100+"%"); num++; }else{ System.out.println("已经下载完成"); break; } } } System.out.println("每个线程各下载: "+(n1/500)*100+"%"+" "+(n2/500)*100+"%"+" "+(n3/500)*100+"%"+" "+(n4/500)*100+"%"+" "); System.out.println(n1+" "+n2+" "+n3+" "+n4); } } public class demo1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub LoadDown loadDown =new LoadDown(); Thread thread1=new Thread(loadDown,"下载线程一"); Thread thread2=new Thread(loadDown,"下载线程二"); Thread thread3=new Thread(loadDown,"下载线程三"); Thread thread4=new Thread(loadDown,"下载线程四"); thread1.start(); thread2.start(); thread3.start(); thread4.start(); } }