问题描述
- java怎么用多线程并发运行for?
-
如果把下面的改成十个线程并发运行不同的for语句,,就我最下面写好的那个方法,参数用定义好的数组里面的十个int变量,请问要怎么写?public static void main(String[] args) { for(Thread t:getThreads()){ t.start(); } } public static Thread[] getThreads(){ Thread[] thread = new Thread[10]; for(int i=0;i<10;i++){ final Integer num = new Integer(i); thread[i] = new Thread(new Runnable(){ public void run() { int j=5; while(j-->0){ System.out.println("this is thread"+num); } } }); } return thread; } public static void bbq(int a){ for(int b=a;b<a+2;b++){ System.out.println("for循环"+"起始值为"+a+"终止值为"+(a+2)); } }
解决方案
for(Thread t:getThreads()){
t.start();
}
因为线程执行时间太短了,用循环模拟不出效果来。
改成下面的方式
Thread[] thread =getThreads() ;
thread[0].start();
thread[1].start();
thread[2].start();
thread[3].start();
thread[4].start();
解决方案二:
public class MyThread extends Thread{
private int num = 0;
public MyThread(Integer num){
this.num = num;
}
public void run(){
bbq(num);
}
public static MyThread[] getThreads(){
MyThread[] thread = new MyThread[10];
for(int i=0;i<10;i++){
thread[i] = new MyThread(i);
}
return thread;
}
public static void bbq(int a){
for(int b=a;b<a+2;b++){
System.out.println("for循环"+"起始值为"+a+"终止值为"+(a+2));
}
}
public static void main(String[] args) {
for(Thread t:getThreads()){
t.start();
}
}
}
时间: 2025-01-02 07:53:13