Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

137
Views
Encadenamiento condicional Java8 CompletableFuture

He leído muchos tutoriales futuros completables de java8, la mayoría de ellos son básicamente iguales. Todos hablan de algún método básico "thenAccept"/"thenApply"/thenCombine" para construir un flujo de canalización.

Pero cuando se trata de un problema de trabajo real, me resulta difícil organizar diferentes futuros completables de diferentes Servicios. Por ejemplo:

 interface Cache{ CompletableFuture<Bean> getAsync(long id); CompletableFuture<Boolean> saveAsync(Bean bean); } interface DB{ Completable<Bean> getAsync(long id) }

la lógica del servicio es bastante simple, obtenga datos de Cache, si existen, devuélvalos a nuestro cliente, si no, obténgalos de DB, si existen, guárdelos en Cache y devuélvalos a nuestro cliente, si ninguno existe en DB, devuelva " error" al cliente.

usando la API de sincronización, será bastante sencillo. Pero cuando se usa una API asíncrona, hay "muchas canalizaciones", muchas interrupciones condicionales. No puedo entender cómo implementar esto usando CompletableFuture API.

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Si no le importa el resultado de guardar en el caché y si desea lanzar una excepción en el bean no encontrado, entonces puede ser, por ejemplo

 CompletableFuture<Bean> findBeanAsync(long id, Cache cache, DB db) { return cache.getAsync(id).thenCompose(bean -> { if (bean != null) { return CompletableFuture.completedFuture(bean); } return db.getAsync(id).thenApply(dbBean -> { if (dbBean == null) { throw new RuntimeException("bean not found with id " + id); } cache.saveAsync(dbBean); return dbBean; }); }); }
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!