完成任务后从arraylist,堆栈,队列中删除线程

时间:2016-03-16 18:32:02

标签: java multithreading

每个人都知道正义。 我练习线程和班级关系。 我的问题是从线程类获得结果。 如果你建议回调,你可以为这个例子实现回调类。

public class factorial extends Thread {
    int sz = 0;
    List < String > ar = new ArrayList < String > ();
    public factorial(int n) {
        this.sz = n;
    }
    public void run() {
        int p = 1;
        for (int i = 1; i <= sz; i++) {
            p *= i;
            ar.add(p + "");
        }
    }
}
public class Test {
    public static List < String > ans = new ArrayList < String > ();
    public static void main(String[] args) {
        factorial f1 = new factorial(10);
        factorial f2 = new factorial(8);
    }
}

1 个答案:

答案 0 :(得分:1)

在你的主要:

// Start both threads
f1.start();
f2.start();

// Wait until they are finished
f1.join();
f2.join();

// Here are your lists
List<String> f1Strings = f1.ar;
List<String> f2Strings = f2.ar;

但是,我无法通过代码审核来帮助自己:

  • 班级名称以大写字母(Factorial)开头,应该更具描述性,例如:FactorialCalculatorThread
  • 不要直接访问字段(就像我在上面的示例中所做的那样),使用getters(getSomething)并使用描述性名称!
  • 另外还有疑虑!我不会计算阶乘,也会在一种方法中转换为字符串。