itu kenapa didalam runnable ada thread lagi >.<
bukannya runnable itu sendiri merupakan thread ?
dan juga kenapa ada yield ngapit itu ? cara initiate n run thread kamu
gimana ?

thanks,
Wiyanto

2010/4/5 Niksen Harjanto <[email protected]>

>
>
> rekan2, saya punya aplikasi pake swing (desktop) untuk komunikasi YM.
> Aplikasi ini kerjanya simple, pas terima message dari friend di save
> ke tabel X (DB), trus ada 1 timer/thread yang baca tabel Y ada message
> baru ga untuk di kirim ke friend.
>
> Untuk proses receiving message udah sukses.
> Yang bermasalah itu pas program ditambah rutin2 untuk baca dari tabel DB.
> Asalnya saya pake Timer, tapi rutin2 untuk receiving message malah ga
> jalan. Saya sih curiganya main thread kemakan abis sama Timer.
> Buktinya pas Timer dinon aktifkan, rutin2 receiving message jalan
> lagi.
> Saya kepikiran untuk pake Thread (thread tambahan), nah anehnya pake
> Thread tambahan juga masih sama, malah lebih parah dari sebelomnya.
> Tampilan log message di komponen JFrame ga tampil sama sekali...
> program keliatan seperti hang.
>
> Di JFrame program ada sebuah JTextArea, trus saya punya 1 prosedur
> untuk menampilkan string message ke dalam JTextArea itu. Di daleem
> prosedur itu isinya cuma menampilkan string message yang sudah
> ditambah jam saat itu.
>
> public void addMessageList(String strMessage) {
> txtLog.append(new ClsConverter().getNow_dd_MMM_yyyy_hh_mm_ss()
> + " - " + strMessage + dbConnection.END_OF_LINE);
> }
>
> prosedur ini dipake sama main thread untuk nampilin log aplikasi.
>
> untuk thread tambahan saya bentuk kaya gini (ThreadClass ada di dalam
> kelasnya JFrame) :
>
> private class ThreadClass implements Runnable {
> private Thread thread;
> private ClsDatabaseConnection dbConnection;
>
> public ThreadClass(ClsDatabaseConnection dbConnection) {
> this.pnlYM = pnlYM;
> this.dbConnection = dbConnection;
> thread = new Thread(this);
> thread.setPriority(Thread.MIN_PRIORITY);
> }
>
> public void run() {
> while(true) {
> Thread.yield();
> ThreadMethod.onExecuted(txtLog, dbConnection);
> Thread.yield();
> try {
> thread.sleep(2000);
> }
> catch (InterruptedException ex) {
> }
> }
> }
> }
>
> Method yang dipanggil waktu run() (ThreadMethod ada di luar kelas JFrame) :
>
> class ThreadMethod {
> synchronized static void onExecuted(JTextArea txtLog,
> ClsDatabaseConnection dbConnection) {
> Thread.yield();
> txtLog.append(new ClsConverter().getNow_dd_MMM_yyyy_hh_mm_ss()
> + " - " + "From Thread..." + dbConnection.END_OF_LINE);
> Thread.yield();
> System.out.println("Thread");
> }
> }
>
> waktu di running, di log output-nya NetBeans keluar kata "Thread"
> setiap 1 detik, tapi tampilan JFrame ko jadi freeze ya... padahal saya
> udah kasih statement Thread.yield() untuk ngasih waktu processor untuk
> eksekusi thread lain.
>
> Kira2 salahnya di mana ya?
> mohon bantuannya....
>
> Terima kasih...
>  
>

Kirim email ke