나는 대답을 찾기 위해 열심히 노력했지만 무엇이 잘못되었는지 알지 못합니다. JAVA 스레드 사용법을 배우고 있습니다. 내가 우주 함 게임을하고있다. 나는 enemys를 만드는 한가지 방법을 가지고있다. (그 적들은 ArrayList에 추가된다. 나는이 ArrayList에서 죽은 적을 찾아 보는 또 다른 방법을 가지고있다. (죽은 부울은 화면의 적을 죽이거나 그 죽임을 당하면 참이된다.) 만약 죽은 것이라면 ArrayList의 원소를 제거한다. 더 이상 칠해질 수 없다.) createEnemy 메서드를 사용하는 스레드가 하나 있는데 (잘 작동합니다). 문제는 지금,이 ereaseEnemy 메서드를 사용해야하지만 그것은 나와 동시성 오류를 제공해야합니다, 나는 두 가지 방법으로 동기화를 사용하여 시도했지만 ereaseEnemy 메서드는 결코 작동하지 않습니다. 이 문제를 어떻게 해결해야할지 모르겠다. 나는 다른 스레드를 만들기 위해 첫 번째 스레드 (작성자)를 멈 춥니 다? 나 여기 somethig가 없어? 감사! 적ArrayList의 Java 동시성
for (Enemigo enemigo1 : enemigos) {
if (!enemigo1.isEstaVivo()) { enemigos.remove(enemigo1); }
}
아마 여러 스레드를 사용해서는 안됩니다. – SLaks
arraylist에서 항목을 제거하는 방법에 대한 예제 코드는 무엇입니까? – kosa
괜찮아요, 작동하지만, 어쨌든 어떻게 사용하지 않는지에 대한 단서가 없습니다. 창조자 스레드를 사용해야하는 것이야말로 적을 계속해서 보낼 수있는 유일한 방법입니다. 하지만 내가 말했듯이 어떻게 그 적의 명단을 청소할 수 있는지 모르겠다. 내가 그 목록을하지 않으면 성장과 성장을 계속하십시오. 어떤 충고? – MBRebaque