doLearn(“Generics”,2)

Generic juga bisa diterapkan pada deklarasi sebuah kelas. contoh
klasiknya adalah sebagai berikut:

public class Pair<T,V>{
	T key = null;
	V value = null;
	public Pair(T t, V v){
		this.key = t;
		this.value =v;
	}

	public V get(T t){
		return value;
	}

	@Override
	public String toString(){
		return "key = "+key+" value ="+value;
	}

	public static void main(String[] args){
		Pair<String,String> pString = new Pair<String,String>("Hello","world");
		System.out.println(pString);

		Pair<String,Integer>pStrInt = new Pair<String, Integer>("This",1);
		System.out.println(pStrInt);
	}
}

hasil dari eksekusi program diatas adalah

key = Hello value =world
key = This value =1

tentu saja generic diatas, hanya salah satu contoh penerapan generic
pada sebuah kelas.

nah bagaimana cara mengartikan generic diatas?
seperti telah kita ketahui, bahwa generic tidak merubah bytecode hasil
dari kompilasi kelas pada java, sehingga untuk lebih mudahnya kita
dapat mengasumsikan bahwa sebelum proses kompilasi java merubah dari
kode java ke bytekode, terjadi perubahan dimana (contoh 1 dari
Pair) character generic ‘V’ diubah menjadi
String,sedangkan ‘T’ menjadi String. dan pada begitu juga pada code
Pair dimana ‘T’ menjadi String, dan ‘V’ menjadi
Integer.

dari sini bisa menimbulkan pertanyaan apakah

Pair<String,String>

dan

Pair<String,Integer>

adalah 2 kelas yang sama?, yap dua contoh itu adalah 2 kelas yang
sama, hal ini bisa dibuktikan dengan


Pair<String,String> pString = new Pair<String,String>("Hello","world");
Pair<String,Integer>pStrInt = new Pair<String, Integer>("This",1);
assert pString.getClass() == pStrInt.getClass();
Advertisements

Thread dan java

Apa itu Thread?

Kalo ditanya apakah itu thread? susah untuk menjawab, yang jelas
thread itu adalah sebuah konsep abstrak untuk proses yang dilakukan
oleh komputer untuk menyelesaikan sebuah tugas.

Apa perbedaan antara Thread dan Process

Didalam konsep OS, ada 2 buah istilah yang digunakan untuk sebuah
proses menyelesaikan tugas, Thread dan Process.

Thread adalah Lightweight sedangkan Process adalah HeavyWeight, Satu
atau lebih thread bisa dipunyai oleh process. antara 1 Thread dan
thread lainya sama2 menggunakan Heap yang sama, sedangkan 1 Process
dan process yang lain menggunakan Heap yang berbeda. Bisa dianalogikan
process itu dengan applikasi, dalam sebuah OS satu aplikasi dan
aplikasi yang lain akan mempunyai heap yang berbeda, sedangkan dalam 1
applikasi dapat mempunyai 1 atau lebih thread.

Kenapa harus menggunakan Thread?

Paling tidak ada 2 hal yang membuat sebuah program untuk menggunakan
Thread (dalam hal ini java):

  • Membuat GUI lebih responsive
  • Menggunakan resources menjadi lebih efektif.

Bagaimana cara membuat Thread pada Java

  1. Extending Thread

    Thread t = new Thread(){
    public void run(){
    System.out.println("Thread started");
    }
    }
  2. Implementing Runnable

    Thread t = new Thread(new Runnable(){
    public void run(){
    System.out.println("Thread started");
    }
    })

cara diatas hanya untuk menyingkat pengetikan saja, mungkin cara yang
lain adalah

class NewThread extends Thread{...

dan

class NewThread implements Runnable{...

Setelah membuat object dari thread, maka untuk menjalan thread, harus
dengan perintah t.start().