Pen-Sinkronisasi-an Thread — JAVA

  • Method statis Thread.sleep( ) memaksa sebuah Thread untuk meninggalkan keadaan / operasi yang berjalan hingga durasi sleep-nya selesai. Thread.sleep(200) membuat sebuah Thread tertidur selama 200 milidetik.
  • Method sleep( ) memberikan sebuah Exception (InterruptedException – Exception yang diinterupsi) sehingga semua panggilan method sleep ( ) HArUS di “bungkus” dengan sebuah TRY/CATCH.
  • Kita dapat menggunakan method sleep () untuk membantu memastikan semua thread mendapatkan kesempatan untuk berjalan/beroperasi, meskipun tidak ada yang menjamin bahwa kapan sebuah thread bangun dan beroperasi pada akhir baris terakhir ia beropeasi. Mungkin saja, contohnya, langsung kembali ke depan. Pada kebanyakan kasus, ketepatan waktu pemanggilan method sleep ( ) adalah yang kita butuhkan untuk menjaga Thread kita saling bergantian dengan baik, tanpa error.
  • Kita dapat memberi nama sebuah Thread menggunakan method setName ( ). Semua thread memiliki nama secara default, tapi memberikan mereka sebuah nama eksplisit dapat membantu kita berada pada jalur thread-thread, khususnya jika kita men-debug nya dengan pernyataan print( ).
  • Kita dapat mempunnyai masalah serius dengan thread jika dua atau lebih thread mempunyai akses ke objek yang sama dalam tumpukan-objek.
  • Dua atau lebih thread mengakses objek yang sama dapat mengakibatkan kerusakan data jika salah satu thread, contohnya, meningalkan keadaan/operasi yang sedang dijalankannya sementara tetap pada pertengahan memanipulasi keadaan / operasi kritis sebuah objek.
  • Untuk membuat objek thread kita AMAN, tentukan pernyataan mana yang seharusnya diperlakukan sebagau satu proses atom. Dengan kata lain, tentukan method mana yang HARUS beroperasi hingga selesai sebelum thread lainnya mengekseskusi method yang sama pada objek yang sama.
  • Gunakan kata kunci synchronized untuk memodifikasi sebuah deklarasi method, ketika kita ingin untuk mencegah dua thread sekaligus mengeksekusi method itu.
  • Setiap objek memiliki sebuah gembok (lock), dengan sebuah kunci tunggal untuk gembok itu. Seringkali kita tidak peduli tentang gembok itu; gembok-gembok memiliki peran yang harus diperhatikan ketika sebuah objek memiliki method synchronized.
  • Ketika sebuah thread mencoba masuk ke method synchronized, thread HARUS memiliki kunci untuk objek itu (objek dari method). Jika kunci tidak tersedia (karena thread lain memegangnya), thread akan menunggu, hingga kunci tersedia.
  • Bahkan jika sebuah objek memiliki lebih dari satu method synchronized, tetap memiliki satu kunci saja. Sekali sebuah thread mengeksekusi sebuah method synchronized pada objek itu, tidak ada thread yang bisa mengeksekusi method synchronized pada objek yang sama. Pembatasan ini akan melindungi data kita dengan mensikronkan method yang ada dari pemanipulasian data.

Thread-Thread — JAVA

  • Sebuah Thread (rangkaian) dengan sebuah huruf-kecil ‘t’ adalah sebuah thread yang terpisah dengan Eksekusi di Java Programming.
  • Setiap Thread pada Java memiliki Tumpukan panggilannya sendiri.
  • Sebuah Thread dengan sebuah bahasa-kapital ‘T’ adalah Class Thread pada java.lang. Sebuah objek Thread mewakili sebuah Thread yang diEksekusi.
  • Sebuah Thread membutuhkan pekerjaan untuk dilakukan. Pekerjaan Thread adalah sebuah contoh sesuatu yang mengimplementasikan Interface Runnable.
  • Sebuah Interface Runnable hanya memiliki sebuah method tunggal, run ( ). Ini adalah method yang akan diletakkan bawah dari panggilan tumpukan yang baru. Dengan kata lain, itu adalah method yang pertama kali dijalankan pada thread baru.
  • Untuk menjalankan sebuah Thread baru, kita butuh sebuah Runnable untuk melewati Constructor dari Thread.
  • Sebuah thread berada di dalam keadaan BARU ketika kita mempunyai sebuah objek Thread yang dipakai tapi belum dipanggil dengan method start ( ).
  • Ketika kita mulai sebuah thread (dengan memanggil Method Start ( ) dari Objek Thread), sebuah tumpukan baru akan dibuat, dengan run ( ) method dari Runnable yang berada di bawah tumpukan. Thread sekarang mulai dalam keadaan RUNNABLE, menunggu untuk dijalankan.
  • Sebuah thread mengatakan untuk menjadi RUNNING ketika Penjadwal Thread dari JVM telah memilihnya untuk menjadi thread yang sedang berjalan. Pada mesin berprosessor tunggal, hanya ada satu Thread yang sedang Berjalan.
  • Kadang sebuah Thread dapat dipindahkan dari keadaan RUNNING ke keadaan TERBLOK (TIdak Berjalan untuk Sementara). Sebuah Thread mungkin Terblok karena ia menunggu data dari sebuah stream (aliran data), atau karena ia telah tertidur, atau karena ia menunggu untuk penguncian Objek.
  • Penjadwalan Thread tidak menjamin untuk bekerja pada cara tertentu, jadi kita tidak dapat memastikan bahwa thread-thread akan bergiliran sesuai keinginan kita. Kita dapat membantu untuk mempengaruhi mengaktifkan pengambilan dengan mengkondisikan thread anda ke keadaan sleep pada waktu-waktu tertentu.

Client and Server

  • Aplikasi Client dan Server BerKomunikasi melalui Koneksi Soket (Socket Connection),
  • Sebuah Soket merupakan sebuah Koneksi antara dua Aplikasi yang dapat berjalan pada dua mesin fisik yang berbeda (Client dan Server),
  • Sebuah Client harus mengetahui Alamat IP (nama domain) dan nomor port TCP dari Aplikasi Server,
  • Sebuah Port TCP adalah angka unsigned 16-bit yang merupakan aplikasi khusus Server. Sejumlah TCP port mengizinkan sebuah Client yang berbeda untuk terhubung pada mesin Server yang sama tapi berkomunikasi pada aplikasi server yang berbeda. Cat. 1 mesin server dapat memiliki beberapa aplikasi server, hal itu ditentukan dengan jumlah port TCP yang berada pada status “mendengarkan” (listen).
  • Sejumlah Port TCP dari 0 hinga 1023 telah digunakan oleh servis yang sudah dikenal, cth. HTTP, FTP, SMTP, dll.
  • Sebuah Client terhubung ke Server menggunakan kode:

Socket s=new Socket(“127.0.0.1”, 4242);

  • Sekali terhubung, client dapat memperoleh Input dari server dan mengirim Output (Pesan) ke Server. Kode ini adalah Aliran Koneksi Level-Rendah (karena berbenruk bit-bit) : sock.getInputStream ( );
  • Untuk membaca data teks dari Server, kita memerlukan BufferedReader yang terhubung dengan InputStreamReader. InputStreamReader terhubung dengan Socket (Server sebagai Sumber Pesan).
  • InputStreamReader berperan sebagai “Jembatan” antara Bit-bit (Level Rendah) dari Socket (Server) ke bentuk karakter data (Level-Tinggi) di BufferedReader.
  • Untuk Menulis teks / data ke Server, hubungkan PrintWriter ke OutputStream dari Soket. Gunakan method print( ) atau println( ) untuk menulis (mengirim) teks ke Server (Soket).
  • Server menggunakan ServerSocket untuk MENUNGGU permintaan dari Client pada nomor port TCP tertentu.
  • Ketika ServerSocket mendapatkan permintaan (dari client), ia “menerima (accept)” permintaan itu, kemudian membuat sebuah koneksi Soket dengan Client tsb.

File Writer dan File Reader — JAVA

  • Untuk menulis sebuah file Teks, mulai dengan sebuah aliran koneksi FileWriter (Penulis File).
  • “Ikatkan” FileWriter ke sebuah BufferedWriter untuk Effisiensi.
  • Sebuah file Objek mewakili sebuah file pada jalur tertentu, tapi tidak mewakili isi file yang sebenarnya.
  • Dengan sebuah file objek kita dapat membuat, mengutak-atik, dan menghapus daftar file (File/Folder Directory).
  • Kebanyakan stream-stream (aliran) yang bisa menggunakan namaFile berupa String dapat menggunakan sebuah Objek File, dan sebuah Objek file dapat lebih aman untuk digunakan.
  • Untuk membaca sebuah file Teks, mulai dengan sebuah Aliran Koneksi FileReader (Pembaca File).
  • “Ikatkan” FileReader ke sebuah BufferedReader untuk Effisiensi.
  • Untuk mengurai sebuah File Teks, kita harus memastika sebuah file ditulis sengan beberapa cara untuk mengenali elemen-elemen yang berbeda. Sebuah pendekatan yang lazim adalah menggunakan beberapa macam karakter untuk memisahkan potongan-potongan tunggal.
  • Menggunakan metode String split( ) untuk memisahkan sebuah String menjadi sebuah kata tunggal. Sebuah String dengan salah satu pemisah akan mempunyai dua tanda, satu pada tiap sisi pemisah. Pemisah tidak dihitung sebagai sebuah kata / tanda.

Menginstall MultiBoot pada Flash Disk / USB menggunakan Software MultibootUSB

Pada kesempatan kali ini, saya akan memaparkan cara untuk menginstall / memasang MultiBoot pada FD.

Bagi pembaca yang masih bingung apa arti dan kegunaan Multiboot, silahkan terlebih dahulu membaca Pendahuluan Artikel ini.

Pendahuluan

Multiboot / Dualboot adalah kondisi dimana kita memasang lebih dari satu system operasi dalam satu buah computer.

Mengapa menggunakan DualBoot

Alasan yang sering menjadikan dasar proses dualboot adalah rasa tidak tega atau tidak ikhlas untuk menghapus sistem operasi yang sebelumnya. Selain itu, juga karena ada beberapa aplikasi yang belum ditemukan penggantinya di sistem operasi Linux, dan menjalankan aplikasi tersebut di sistem operasi windows adalah jalan keluar yang masuk akal untuk kondisi tersebut.

Syarat Menggunakan DualBoot

Agar sebuah komputer dapat dipasang dua buah sistem operasi, tentunya syarat utama yaitu ukuran space harddisk yang cukup besar sehingga dapat menampung sistem operasi-sistem operasi tersebut dengan nyaman.

Booting

Software MultibootUSB

Software ini merupakan Open-Source Software (OSS), artinya software ini gratis dan bahkan dapat kita kembangkan asalkan kita sudah ahli dalam bahasa pemrograman yang digunakan. Bahasa pemrograman yang digunakan ialah Python dan pyqt.

Ini buktinya,

python

Untuk kamu yang sudah ahli dengan dua bahasa pemrograman tsb, ini saya sertakan link source code nya >>>>https://github.com/mbusb/multibootusb

Software ini dapat berjalan pada OS Windows dan Linux, tapi kali ini saya hanya menggunakannya pada OS Windows.

Persiapan

Hal-hal yang pembaca harus siapkan terlebih dahulu sebelum memulai eksekusi :

  1. Flash Disk, minimal ukurannya lebih besar sedikit dari ukuran file iso atau img nya. Biasanya 2 GB sudah cukup. Sebenarnya Software ini juga mendukung untuk penginstallan pada SD Card, tetapi karena sebelumnya saya telah coba dan ternyata tidak dideteksi saat booting, maka saya tidak menyarankan untuk memasangnya pada SD Card. Bagi pembaca yang menegtahui cara Booting melalui SD Card, silahkan komentar di bawah. Karena “ILMU yang DIBAGI itu akan BERLIPAT GANDA”. hehe
  2. File iso. Yang akan dipasang ke USB FD anda. Perhatian! Karena Software ini masih dalam pengembangan, maka beberapa file iso. Tidak didukung. Beberapa file iso yang coba dan berhasil ialah, Linux UBUNTU.
  3. Software MultibootUSB, download di sini >>> http://sourceforge.net/projects/multibootusb/
  4. Kesabaran, karena proses pemasangan cukup lama tergantung dari ukuran file iso – nya. SABAR yo!

Eksekusi

  • Pada OS Windows, jalankan aplikasi MultibootUSB.
  • Colokkan USB (FD) anda. Pastikan FDnya terdeteksi oleh computer anda.
  • Secara default, tab MultibootUSB yang terbuka,

mbusb

  • Berdasarkan gambar di atas, STEP 1 : pertama-takita menentukan lokasi FD yang akan kita pasangkan file iso. nya.
  • STEP 2 : Silahkan tentukan lokasi file iso nya.
  • STEP 3 (Tombol Create) : Memulai Penginstalan.
  • Tunggu hingga prosesnya selesai.
  • Untuk menambahkan File iso yang lainnya, anda tinggal memastikan ruang kosong FD anda masih cukup dan Menentukan Lokasi File iso.nya (STEP 2).

FITUR TAMBAHAN

  • Software ini telah mendukung proses QEMU. QEMU adalah Virtual mesin hasil opens ource yang berguna untuk  memungkinkan  kita untuk menjalankan sistem operasi  di dalam sistem operasi.
  • Caranya, tinggal buka TAB QEMU,

QEMU

Pada panel BOOT USB, terlebih dahulu pilih RAM yang diinginkan. Penentuan Jumlah RAM ini berfungsi memvirtualisasikan apabila kita menggunakan ukuran RAM tsb pada saat booting.

Dan selanjutnya, klik tombol Boot USB,

Sebaiknya, setelah anda menginstall file iso, anda mengecek Hasilnya pada Fitur QEMU ini.

Fitur BOOT ISO berfungsi untuk memeriksa apakah suatu file iso dapat memBOOT atau tidak.

Semoga Bermanfaat.

   Referensi