Sementara saya membaca sebuah makalah penelitian tentang konkurensi bernama Perangkat Lunak dan Revolusi Konkurensi ( versi html ). Saya menemukan garis berikut:
Sayangnya, meskipun kunci berfungsi, mereka menimbulkan masalah serius bagi pengembangan perangkat lunak modern. Masalah mendasar dengan kunci adalah bahwa kunci tidak dapat dikomposisikan . Anda tidak dapat mengambil dua potong kode berbasis kunci yang benar, menggabungkannya, dan tahu bahwa hasilnya masih benar. Pengembangan perangkat lunak modern bergantung pada kemampuan untuk menyusun pustaka ke dalam program yang lebih besar, dan karenanya merupakan kesulitan serius bahwa kita tidak dapat membangun komponen berbasis kunci tanpa memeriksa implementasinya.
Saya sedang berpikir, bagaimana Java menjamin concurrency yang dapat dikompilasi atau bahkan ada cara untuk menghasilkan skenario ini.
Dan bagaimana kita bisa menyinkronkan data di satu atau lebih perpustakaan? Dapatkah seorang programmer melakukannya dari programnya atau terserah perpustakaan untuk menyinkronkan sesuatu.
Jika tidak Java maka apakah ada bahasa lain yang menggunakan konkurensi berbasis kunci dan menjamin konkurensi gabungan?
Berikut ini juga diambil dari kertas yang sama:
Setidaknya ada tiga masalah utama dengan metode yang disinkronkan. Pertama, mereka tidak sesuai untuk tipe yang metodenya memanggil fungsi virtual pada objek lain (misalnya, Java's Vector dan .NET's SyncHashTable), karena memanggil kode pihak ketiga sambil memegang kunci membuka kemungkinan kebuntuan . Kedua, metode yang disinkronkan dapat melakukan terlalu banyak penguncian, dengan memperoleh dan melepaskan kunci pada semua instance objek, bahkan yang tidak pernah dibagikan di seluruh utas (biasanya mayoritas). Ketiga, metode yang disinkronkan juga dapat melakukan penguncian terlalu sedikit, dengan tidak menjaga keaslian ketika suatu program memanggil beberapa metode pada suatu objek atau pada objek yang berbeda. Sebagai contoh sederhana dari yang terakhir, pertimbangkan transfer perbankan: account1.Credit (jumlah); account2.Debit (jumlah) ...
Catatan: Kertas diterbitkan pada September 2005