有三个线程,共享某个数据list,在run方法中遍历list, 当线程满足某个条件时(如执行N次任务后)想终止此线程其他线程继续运行,
请问大虾们怎么做,我做的老是报错

解决方案 »

  1.   

    不知道你要的是什么效果
    class Th extends Thread{
    private static List l = new ArrayList();
    static{
    l.add("1");
    l.add("2");
    l.add("3");
    l.add("4");
    } public void run() {
    for(int i=0;i<l.size();i++){
    if("4".equals(l.get(i)))//当输出到4的时候任务停止
    break;
    System.out.println(getName()+"输出"+l.get(i));

    }
    }}public class T{

    public static void main(String[] args){
    Thread t1 = new Th();
    Thread t2 = new Th();
    Thread t3 = new Th();
    Thread t4 = new Th();
    t1.start();
    t2.start();
    t3.start();
    t4.start();
    }
    }
      

  2.   

    假设list中的值是1000,1001,1002,这几个数字,有重复的,
    现在有2个线程分别读他们,一个只能读1000,1001,另一个读1001,1002,最后每个线程读的数字要记录下来,而且尽量让他们读数字的次数相等.LS的可能我意思没说清楚
      

  3.   

    你可以在一个线程执行结束了。。重新起一个线程赛。。一个来啊
    也可以用wait()方法让其他线程等着
    一个线程执行完了。用notify()唤醒其他线程
    不过唤醒的话就不能一个一个唤醒了。。一下子都全部唤醒。。
    我说的不知道对不对。。?
    期待其他达人的高见。。
      

  4.   

    这种感觉?import java.util.ArrayList;
    import java.util.List;
    public class Test { public static void main(String[] args) {

    List<Integer> lst = new ArrayList<Integer>();

    for (int i = 0; i < 10; i++) {
    lst.add(1001);
    lst.add(1002);
    lst.add(1003);
    }

    TestThread  a = new TestThread(lst);
    TestThread  b = new TestThread(lst);
    TestThread  c = new TestThread(lst);

    a.start();
    b.start();
    c.start();
    }}class TestThread extends Thread {

    List<Integer> lst;

    List<Integer> alst = new ArrayList<Integer>();

    int n;

    TestThread(List<Integer> lst){
    this.lst = lst;
    }

    public void run(){

    while(n<4){

    for (Integer a : lst) {
    System.out.println(a+"-"+this.getName()+"-"+n);
    }
    n++;
    }

    }
    }