//开始
for (int i = 0; i < fList.size(); i++) {
final List<FndMenuEntriesIntDto> sortList = fndMenuEntriesIntDao.getListByMenuId(fList.get(i).getMenuId(), versionId); new Thread(new Runnable() {
@Override
//线程1
public void run() {
for (int i = 0; i < sortList.size(); i++) {
doSomeThing1();
}
}
}).start(); new Thread(new Runnable() {
@Override
//线程2
public void run() {
for (int i = 0; i < sortList.size(); i++) {
doSomeThing2();
}
}
}).start();
}}doSomeThing1();和doSomeThing2();里执行的业务不一样,所需的时间也不同。
开始的循环处会等线程1和线程2都执行完再执行下一次循环码?
final List<FndMenuEntriesIntDto> sortList = fndMenuEntriesIntDao.getListByMenuId(fList.get(i).getMenuId(), versionId); Thread th1 = new Thread(new Runnable() {
@Override
//线程1
public void run() {
for (int i = 0; i < sortList.size(); i++) {
doSomeThing1();
}
}
});
th1.start();
th1.join();
Thread th2 = new Thread(new Runnable() {
@Override
//线程2
public void run() {
for (int i = 0; i < sortList.size(); i++) {
doSomeThing2();
}
}
});
th2.start();
th2.join();
}这样的话就可以了吗?
http://blog.csdn.net/huang_xw/article/details/7090152你可以去看看
package com.cyclicbarrier;import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
/**
* @author wankun
* 多线程实现并发数组排序
*/
public class TestCyclicBarrier implements Runnable{ public static void main(String[] args) {
sortList();
} public List list ;
public int pid;
public CyclicBarrier barrier;
public TestCyclicBarrier(List list,int pid,CyclicBarrier barrier) {
this.list = list;
this.pid = pid;
this.barrier = barrier;
}
@Override
public void run() {
System.out.println("线程"+pid+"开始排序list");
try {
dosomething(list);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
System.out.println("线程"+pid+"排序list结束");
try {
barrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
}
public void dosomething(List list) throws InterruptedException
{
System.out.println("排序数组");
Thread.sleep(5000);
}
public static void sortList()
{
List<Integer> list = new ArrayList<Integer>();
list.add(8);
list.add(4);
list.add(10);
CyclicBarrier barrier = new CyclicBarrier(2, new Runnable() {
public void run() {
System.out.println("两个线程排序List结束,执行其他");
}
});
new Thread(new TestCyclicBarrier(list,0,barrier)).start();
new Thread(new TestCyclicBarrier(list,1,barrier)).start();
}
}