小编Abu*_*lib的帖子

为什么java thread wait()只能在这里使用时间限制?

我试图熟悉SCJP的Java线程,我有一个问题.

在下面编写的代码中,我简单地创建了:两个带有公共数据存储(一个数组)的Runnable和一个用于连续填充数据的同步write()方法,依次为每个Runnable(A和B)留下一个字母作为标记.

我知道代码很粗糙,可以更好地编写,但我正在寻求线程的道德.

所以现在当我运行它时,它永远不会终止,结果停在:

还好.A0.

但是,当我将wait()更改为wait(100)时,它可以正常计数从0到9并正常终止.有人可以解释一下这背后的原因吗?

谢谢.

public class ArrayThreads {

Object[] array = new Object[10];
boolean isA = true;

    int position = 0;

    int getIndex(){
        return position;
    }



class ThreadA implements Runnable{

            synchronized void write(String value){
                    while(!isA){
            try {
                wait();
            } catch (InterruptedException ex) {
                System.out.println("An error in" + value);
                ex.printStackTrace();
            }
        }
        array[position] = value + position;
        System.out.println(array[position]);
        position++;
        isA = !isA;
        notify();
    }

    public void run() {
        while(getIndex()<array.length){
            if (getIndex()==9) return;
            else
        write("A");}
    }
}

    class ThreadB …
Run Code Online (Sandbox Code Playgroud)

java multithreading time-wait wait

2
推荐指数
1
解决办法
1189
查看次数

标签 统计

java ×1

multithreading ×1

time-wait ×1

wait ×1