Gmail API를 사용하여 사용자의 이메일을 동기화하는 Android 애플리케이션을 개발 중입니다.Android - 여러 스레드를 병렬로 실행하는 방법
이렇게하려면 처음에는 읽지 않은 전자 메일을 다운로드하고 두 번째는 읽기 전자 메일을 다운로드하는 두 가지 서비스를 구현했습니다. 각 서비스는 Runnable 인터페이스를 구현하고 전자 메일을 검색하고 데이터베이스에 저장하는 코드는 Run() 메서드 내의 스레드를 사용하여 처리됩니다.
모든 것이 잘 작동합니다. 유일한 문제는 내가 가지고있는 유일한 문제는 읽기 전자 메일 다운로드를 담당하는 스레드가 실행 중일 때 (다른 스레드보다 오래 걸림) 두 번째 스레드 (읽지 않은 전자 메일 동기화)가 첫 번째 스레드가 완료 될 때까지 차단된다는 것입니다.
어쨌든 첫 번째 스레드가 우선 실행될 때마다 두 번째 스레드의 우선 순위를 지정할 수 있는지 알고 싶습니다. 두 번째 스레드가 실행될 때마다 코드는 두 번째 스레드를 대기 상태로 두어야합니다. 첫 번째 (읽지 않은 전자 메일)가 실행을 완료 한 다음 스레드를 보류 상태로 다시 시작합니다.
감사합니다.
실제로 Read 이메일을받는 스레드는 매 1 시간마다 실행해야하지만 UnRead 전자 메일을 받기위한 다른 스레드는 매 1 분마다 실행해야합니다. 이제 내 코드가 1 분 스레드를 실행 한 다음 다른 하나를 실행 (훨씬 오래 걸림). 문제가 더 오래 걸리면 더 짧은 코드가 실행될 준비가되었고 첫 번째 코드가 끝날 때까지 기다려야합니다. 그건 내가 원하는 것이 아니야. 나는 더 짧은 것을 달리고 끝날 때까지 더 길게 하나를 보류하고 싶다. 그게 가능하니? 그렇다면 어떻게? 고맙습니다. –
매시간 이메일 읽기를 다운로드하는 프로세스가 실행되는 것 같습니다. 많은 데이터를 낭비합니다. 대신 버튼 클릭으로 오래된 이메일 다운로드 스레드를 시작하는 것이 좋습니다. 하지만 당신이 시작한 논리를 따르는 경우 ExecutorService를 시험해보고 속성을 함부로 다루는 것이 좋습니다. 해결책을 찾을 수 있습니다! –
버튼 클릭으로 오래된 이메일을 다운로드하는 것은 좋은 생각이지만 사용자가 이메일을 너무 많이 보내면 (UI를 완료하고 업데이트하는 데 너무 오래 걸릴 것입니다.) 어쨌든 감사합니다. ExecutorService를 사용하여 내 문제를 처리하는 방법에 대한 스 니펫 코드를 게시 할 수 있습니까? 많은 감사. –