Qué `java garantía SingleThreadExecutor` trabajo previo ha terminado antes de que nuevas aperturas uno?

JK:

Esto se fragmento de mi código:

AppExecutors.getInstance().diskIO().execute(new Runnable() {
    @Override
    public void run() {
        // work 1
    }
});

JSONArray apiResponseGet = ApiHelper.getInstance().getData();

if(apiResponseGet == null)
    throw new Exception("Api call failed");

AppExecutors.getInstance().diskIO().execute(new Runnable() {
    @Override
    public void run() {
        // work 2
    }
});

Excepto lo que este código para hacer es poner en marcha work 1, a continuación, mientras work 1se está ejecutando, solicitud de cosméticos a la API, y una vez finalizada la llamada a la API de guardarlo como resultado work 2.
El problema aquí es que work 2tiene que ser ejecutado después de work 1que se hace. Si work 2se iniciaría antes de work 1que se termine, esto podría causar mi aplicación a portarse mal.

Por lo general llaman a la API tomará mucho más tiempo que work 1, pero vamos a suponer por ahora que la llamada a la API ha terminado, y work 1todavía está en funcionamiento. Desde diskIO es SingleThreadExecutor, ¿significa que ya que es un solo hilo, en este caso, work 2tendrá que esperar hasta work 1acabados?
Y si respuesta es no, ¿cómo asegurarse de que cuando work 2se inicia, work 1ya está hecho?

dariosicily:

De SingleThreadExecutor :

Las tareas están garantizados para ejecutar secuencialmente, y no hay más de una tarea estarán activos en un momento dado.

Así, en su caso work 2tendrá que esperar hasta work 1acabados.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=349749&siteId=1
Recomendado
Clasificación