

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Usa le istanze del client del servizio singleton con AWS SDK for Java 2.x
<a name="singleton-service-clients"></a>

I client di servizio in the AWS SDK for Java 2.x sono thread-safe. È possibile creare un'istanza di ogni client di servizio e riutilizzarla in tutta l'applicazione. Questo approccio migliora le prestazioni e gestisce le risorse in modo più efficiente.

## Vantaggi dei clienti del servizio Singleton
<a name="singleton-performance-benefits"></a>

Pooling di connessioni  
I client di servizio gestiscono pool di connessioni HTTP interni. Creare e distruggere questi pool è costoso. Quando si riutilizzano i client, questi pool vengono condivisi in modo efficiente tra le richieste.

Sovraccarico di inizializzazione ridotto  
La creazione di un client implica il caricamento della configurazione, la creazione di credenziali e l'inizializzazione dei componenti interni. Le istanze Singleton eliminano questo sovraccarico.

Migliore utilizzo delle risorse  
I client Singleton impediscono l'esaurimento delle risorse che può verificarsi quando si creano molte istanze client.

## Crea e utilizza i client di servizio Singleton
<a name="singleton-best-practice-example"></a>

L'esempio seguente mostra come creare e utilizzare i client di servizio singleton:

```
// Create one instance and use it throughout the application.
public class ServiceClientSource {
    private static final S3Client s3Client = S3Client.create();
    
    public static S3Client getS3Client() {
        return s3Client;
    }
}
```

Non creare nuovi client per ogni operazione:

```
// This approach creates unnecessary overhead.
public void badExample() {
    try (S3Client s3 = S3Client.create()) {
        s3.listBuckets();
    }
}
```

## Considerazioni importanti
<a name="singleton-important-considerations"></a>
+ I client di servizio sono thread-safe. Puoi condividerli in sicurezza su più thread.
+ Chiudi i client solo quando l'applicazione si spegne o se non hai più bisogno del client. Usa `client.close()` o try-with-resources a livello di applicazione.
+ Se hai bisogno di configurazioni diverse, come regioni o credenziali, crea istanze singleton separate per ogni configurazione.

Se utilizzi framework di iniezione delle dipendenze come Spring, configura i client di servizio come bean singleton. Ciò garantisce una corretta gestione del ciclo di vita.