마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

db 꼬임 질문이 있습니다.

0 추천
이미 구현되어 있는 프로젝트에 오류가 발생해서 분석을 하고 있는데요.

db 관련 내용입니다.

A라는 메소드는 특정 데이터를 불러와서 추가된 값이나 변경된 값 등을 확인하고 처리하는 내용입니다.
A 초반에 db에 있는 데이터를 가져옵니다. 여기안에 data1이라는 값이 있는데 현재 0입니다.

근데 동시에 B메소드도 함께 실행됩니다. B메소드는 data1 값이 변경된걸 갱신하고 db에 써줍니다.

A는 마지막에 처리된 데이터를 다시 db에 써줍니다.

 

즉, A가 실행되어 db에서 data1 값을 가져옴. 현재 0임.

A가 진행중인 동안 B가 실행(스레드)되고 거기서 db에 data1을 100으로 update 함.

A는 처리할거 다 처리한 후, 처리된 데이터를 db에 update함. 이때 data1은 0이 됨. (100이 되어야 함)

 

이런 경우 어떻게 해야하나요??? db 읽고 쓰는 메소드 모두 synchronized는 되어 있습니다.

조언 부탁드립니다.
블랙이요블랙 (12,860 포인트) 님이 2019년 8월 29일 질문

1개의 답변

0 추천
A와 B에서 무조건 db에 쓰지말고, 처리할 거 다 하고 마지막에 한 번만 db에 쓰는 방식으로 해보세요.
쎄미 (162,410 포인트) 님이 2019년 8월 30일 답변
...