Получить данные из другого потока (android)

Подскажите, пожалуйста, для решения задачи из темы подойдет мой код, указанный ниже? Интересует, как решается подобная задача в продакшене.

public List<User> getAll() {
        List<User> users = new ArrayList<>();
        ExecutorService executor = Executors.newSingleThreadExecutor();
        Callable<List<User>> callable = new Callable<List<User>>() {
            @Override
            public List<User> call() {
                return database.userDao().getAll();
            }
        };
        Future<List<User>> future = executor.submit(callable);        
        try {
            users = future.get();
        } catch (ExecutionException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        executor.shutdown();
        return users;
    }

Update

public void getAll(LoadUserCallback callback) {
        HandlerThread handlerThread = new HandlerThread("DBThread");
        handlerThread.start();
        Handler handlerNew = new Handler(handlerThread.getLooper());
        handlerNew.post(new Runnable() {
            @Override
            public void run() {
                final List<User> users = database.userDao().getAll();
                Handler handler = new Handler(Looper.getMainLooper());
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callback.onLoad(users);
                    }
                });
            }
        });
    }

Ответы (0 шт):