

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à.

# Configura il client asincrono S3 basato su Java per utilizzare trasferimenti paralleli
<a name="s3-async-client-multipart"></a>

Dalla versione 2.27.5, il client asincrono S3 standard basato su Java supporta trasferimenti paralleli automatici (caricamenti e download multiparte). Il supporto per i trasferimenti paralleli viene configurato quando si crea il client asincrono S3 basato su Java. 

Questa sezione mostra come abilitare i trasferimenti paralleli e come personalizzare la configurazione.

## Creare un'istanza di `S3AsyncClient`
<a name="s3-async-client-multipart-create"></a>

Quando crei un'`S3AsyncClient`istanza senza chiamare nessuno dei `multipart*` metodi sul [builder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClientBuilder.html), i trasferimenti paralleli non sono abilitati. Ciascuna delle seguenti istruzioni crea un client asincrono S3 basato su Java senza supporto per caricamenti e download multiparte.

### *Crea senza supporto multiparte*
<a name="s3-async-client-mp-off"></a>

**Example**  

```
import software.amazon.awssdk.auth.credentials.ProcessCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3AsyncClient;


S3AsyncClient s3Client = S3AsyncClient.create();

S3AsyncClient s3Client2 = S3AsyncClient.builder().build();

S3AsyncClient s3Client3 = S3AsyncClient.builder()
        .credentialsProvider(ProcessCredentialsProvider.builder().build())
        .region(Region.EU_NORTH_1)
        .build();
```

### Crea *con il supporto* multiparte
<a name="s3-async-client-mp-on"></a>

Per abilitare i trasferimenti paralleli con le impostazioni predefinite, chiama `multipartEnabled` on the builder e passali `true` come mostrato nell'esempio seguente.

**Example**  

```
S3AsyncClient s3AsyncClient2 = S3AsyncClient.builder()
        .multipartEnabled(true)
        .build();
```

Il valore predefinito è 8 MiB per `thresholdInBytes` e `minimumPartSizeInBytes` impostazioni.

Se si personalizzano le impostazioni multiparte, i trasferimenti paralleli vengono abilitati automaticamente come illustrato di seguito.

**Example**  

```
import software.amazon.awssdk.services.s3.S3AsyncClient;
import static software.amazon.awssdk.transfer.s3.SizeConstant.MB;


S3AsyncClient s3AsyncClient2 = S3AsyncClient.builder()
        .multipartConfiguration(b -> b
                .thresholdInBytes(16 * MB)
                .minimumPartSizeInBytes(10 * MB))
        .build();
```

## Caricamento di stream di dimensioni sconosciute
<a name="java-async-client-stream-unknown-size"></a>

Il client asincrono S3 basato su Java con multipart abilitato è in grado di gestire in modo efficiente i flussi di input in cui la dimensione totale non è nota in anticipo:

```
public PutObjectResponse asyncClient_multipart_stream_unknown_size(String bucketName, String key, InputStream inputStream) {

    S3AsyncClient s3AsyncClient = S3AsyncClient.builder().multipartEnabled(true).build();
    ExecutorService executor = Executors.newSingleThreadExecutor();
    AsyncRequestBody body = AsyncRequestBody.fromInputStream(inputStream, null, executor); // 'null' indicates that the
                                                                                           // content length is unknown.
    CompletableFuture<PutObjectResponse> responseFuture =
            s3AsyncClient.putObject(r -> r.bucket(bucketName).key(key), body)
                    .exceptionally(e -> {
                        if (e != null) {
                            logger.error(e.getMessage(), e);
                        }
                        return null;
                    });

    PutObjectResponse response = responseFuture.join(); // Wait for the response.
    executor.shutdown();
    return response;
}
```

Questo approccio previene i problemi che possono verificarsi quando si specifica manualmente una lunghezza errata del contenuto, come oggetti troncati o caricamenti non riusciti.