使用java中的两个线程依次打印名字,姓氏

时间:2016-05-28 08:37:07

标签: java multithreading arraylist

我有两个static ArrayList,分别包含名字和姓氏。如何使用两个线程按顺序读取和打印名字+姓氏?

1 个答案:

答案 0 :(得分:2)

由于您无法确定哪个线程将按什么顺序运行,因此您无法确定。第一个线程运行3次点击并打印3个名字而不打印任何姓氏。

如果你以某种方式让线程每回合运行一次(比如线程1打印1个名字,然后等待线程2打印姓氏),那么它们在实践中基本上变成了1个线程,所以没有必要有两个线程。

无论如何我认为可以创建一个返回name + surname的同步方法,并增加一个计数器以记住它在数组上的位置:

class TheClass {
    int i = -1;

    synchronized String getNameSurmame() {
        i++;
        return arraylist1.get(i) + " " + arraylist2.get(i);
    }

    //create two threads that call above method and print...
}

ps:闻起来像是糟糕的家庭作业。老师为什么要求学生做坏事?