Siguiendo con el diseño de aplicaciones de alto rendimiento vamos a ver como se podría mejorar el rendimiento de la siguiente parte del gráfico general
donde vemos que hay una librería (cliente) que se integra en otra aplicación. Lo fundamental en este caso es que la librería cliente no penalice, o penalice lo menos posible, el tiempo de ejecución de la aplicación original. Por ejemplo si el cliente es una librería de trazas lo idoneo es que el tiempo de ejecución del método de la aplicación sea el mismo con las trazas activadas que con las trazas desactivadas.
Si partimos de este esquema y aplicando las dos siguientes premisas
Podemos hace uso del framework java.util.concurrent para mejorar mucho el tiempo. Pasando de ejecutar 10000 envios en 60 degundos a 10000 envios en menos de 1 segundo. Es decir mejoramos la sensación del rendimiento al usar la librería cliente en un x100, que es uno de los objetivos que pretendíamos. Un par de snippets de como hacer una petición rest desde un cliente usando esta técnica
donde vemos como se realizaría la petición de manera sincrona.
donde vemos como se realizar la petición asincrona