나는 멀티 스레드 플랫폼 게임을 쓰고 있어요. 한 스레드는 페인팅 작업을 수행하고, 다른 스레드는 게임 로직을 실행합니다. 두 스레드가 동시에 액세스해야하는 배열 목록이 있습니다. 내 페인트 스레드에서 배열 목록의 모든 요소를 반복하고 다른 스레드에서 때때로 배열 목록에 요소를 제거하거나 추가합니다. 동시 수정 예외가 발생하지만 휘발성 키워드가 한 번에
다른 질문에서 휘발성 어레이의 요소가 휘발성이 아니라는 것을 알게되었습니다. 참조 자체 만 휘발성입니다. volatile[] int data;
Thread A: data[4] = 457;
Thread B: System.out.println(data[4]);
여기는 스레드 B는 업데이트 된 값을 볼 수 없을 수도 있습니다. 동일한 옵션을 얻으려면 어
지도를 마무리하는 클래스가 있습니다. 지도는 아래와 같이 Add() 및 isUpwardTrade() 메소드를 사용하여 읽고 쓸 수 있습니다. 전체 메서드를 동기화하여 스레드 안전 문제가 있습니까? 다중 스레드 컨텍스트에서 성능을 향상 시키려면 다음 구현 (예 : concurrentHashMap 또는 다른 것을 사용 하시겠습니까?)을 어떻게 변경 하시겠습니까
public class PlanetInfo {
String planetName="";
int a;
int b;
int c;
PlanetInfo(planetname){
planetName = planetname;
if(planetName.equals("earth")){
a=1;
동기화 된 블록 내에 새 스레드를 만들면 스레드 실행이 완료 될 때까지 블록이 잠긴 상태로 유지됩니까? 그렇지 않은 경우 잠긴 상태가 유지 될 때까지? String sLine;
onClick(String line){
synchronized (lock) {
sLine = line;
new Thread(new Runnable()
가 명확하게 고쳐 동기화 블록 사용 개체 암시 적 잠금 좀 더 명시 적 잠금과 동기화 된 블록의 사용을 혼합 할 수 있도록하고 싶습니다 적절한 때에 직접 잠금 및 해제 메소드 호출을 통해. 따라서 sychtronized (myObject)를 사용할 때 신택스 설탕을 허용하면서 myObject.lock을 호출 할 수 있습니다. & myObject.unlock
서블릿 필터를 사용하고 있으며 그 안에 일부 코드를 스레드로부터 안전하게 만들어야합니다. 나는 추상적 인 코드를 제공하고있다 : doFilter() {
{
......
if (condition1) {
TestClass testObj = StaticTestClass.getTestObj();
testObj = testObj.setTestStr(test
이 코드의 경우 메서드를 동기화하는 것이 좋습니까? 고마워. class{
private static VariableManager = new VariableManager();
...
static class VariableManager{
private Map<String, Integer> diffCases = new
"Java에서 예제가있는"Beginning Algorithms "라는 제목의 책을 읽었습니다. 대기열에 관한 장에서 "블로킹 대기열"에 대해 설명합니다. 심지어 배경이 C#이고 Java가 아니더라도 뭔가 재미있는 것 같습니다. 이 코드의 일부이다 (I 비 관련 부분을 생략 한) : public void enqueue(Object value){