2012-09-10 1 views
2

별도의 스레드에서 실행되는 여러 api를 호출하고 잠금을 발생시키지 않고 sqlite 데이터베이스에 대한 각각의 데이터를 sqlite 데이터베이스에 삽입해야합니다. 이 점에 관해서 제가 참조 할 수있는 실천 사례를 가진 누군가가 도와 줄 수 있습니까?병렬로 스레드를 실행하고 데이터베이스 잠금없이 sqlite 데이터베이스에 해당 데이터를 삽입하는 방법은 무엇입니까?

답변

6

별도의 스레드에서 실행되는 각각의 API를 호출하고 잠금을 발생시키지 않고 sqlite 데이터베이스에 해당 데이터를 삽입해야합니다.

특별한 조치를 취할 필요가 없습니다. 여러 스레드는 응용 프로그램 수준에서 잠금을 수행하지 않고 동일한 SQLiteDatabase 개체를 사용할 수 있습니다. Sqlite는 자체 잠금 기능을 가지고 있습니다. 교착 상태가 발생하지 않아야하지만 한 스레드는 다른 스레드가 삽입을 완료 할 때까지 기다려야합니다.

이러한 질문/답변을 참조하십시오 : SQLite는 안드로이드에서

  • Can two AsyncTasks share the same SQLiteDatabase object?

  • What are the best practices for SQLite on Android?는 단일 스레드입니다. 여러 스레드가 동일한 데이터베이스 연결을 사용하고 있었다고하더라도, 동시에 실행되는 것을 차단할 것이라는 것을 이해합니다. 이 한계를 극복 할 방법이 없습니다. 동일한 데이터베이스에 대해 두 개의 연결을 열면 데이터베이스 업데이트가 조정되지 않으므로 데이터베이스가 손상됩니다.

관련 문제