Satu worker menemui proksi yang boleh digunakan. Anda mengembalikan alamatnya, memanggil cancel pada future lain, dan menjangka aktiviti rangkaian berhenti. Ia mungkin tidak berhenti.

Future boleh dibatalkan sebelum callable-nya bermula. Apabila benang sudah melaksanakan permintaan, membatalkan Future-nya tidak mengganggu operasi soket itu. Worker memerlukan operasi rangkaian terhad dan laluan pembersihannya sendiri.

Jangka hayat executor juga penting. Meninggalkan konteks ThreadPoolExecutor menunggu kerjanya selesai. Menemui satu hasil pantas dan kemudian menunggu beberapa worker perlahan boleh membuat jumlah kelewatan pemanggil kelihatan sama sekali tidak seperti kependaman yang dilaporkan pemenang.

Hadkan perlumbaan sebelum ia bermula

  • Hadkan bilangan pemeriksaan serentak dan bukan menyerahkan senarai awam tanpa had. Senarai proksi percuma menyediakan calon untuk input pemeriksa, dengan protokol setiap titik akhir disimpan untuk worker.
  • Berikan setiap permintaan dasar sambungan dan bacaan yang sesuai.
  • Berikan pemanggil bajet keputusan keseluruhan.
  • Tentukan siapa yang mengalirkan atau menutup hasil daripada worker yang hidup lebih lama daripada keputusan itu.

Menunggu lebih singkat untuk Future tidak sama dengan memendekkan permintaan asasnya. Begitu juga, meninggalkan hasil tidak melepaskan setiap sumber rangkaian dengan segera.

Hasil berjaya pertama juga hanyalah pemeriksaan berjaya pertama. Ia boleh bergantung pada penjadualan, sambungan cache dan destinasi pemeriksaan tertentu. Ia tidak membuktikan bahawa titik akhir itu secara universal paling pantas atau bahawa tugas sebenar akan berjaya.

Selalunya kolam kecil yang dikekalkan dengan pemerhatian terkini lebih mudah daripada berlumba dengan seluruh senarai sebelum setiap muat turun. Gunakan hasil operasi sebenar untuk mengemas kini rekod, dengan dasar pemulihan terkawal untuk kegagalan. Pemeriksaan awal harus memperoleh kosnya dan bukannya menggandakan setiap tugas kerana kebiasaan.

Artikel berkaitan