Java : Thread Pada Java (2)

Sabtu, 23 Oktober 2010 0 komentar
Nah lho, aku dapat contoh Thread lagi,.. 
Di coba terus dikembangkan ya,.. 
Kita sama2 belajar,.. 
 
 
package niyelz;

import java.util.logging.Level;
import java.util.logging.Logger;

public class SimpleThread
{

    // Menampilkan pesan, waktu, dan nama thread
    static void threadMessage(String message)
    {
        String threadName = Thread.currentThread().getName();
        System.out.format("%s: %s%n", threadName, message);
    }

    private static class MessageLoop implements Runnable
    {
        public void run()
        {
            String importantInfo[] =
            {
                "pesan pertama",
                "pesan kedua",
                "pesan ketiga",
                "pesan keempat",
                "pesan kelima",
                "pesan keenam"
            };

            try
            {
                for (int i = 0; i < importantInfo.length; i++)
                {
                    //tunda selama empat detik
                    Thread.sleep(4000);
                    //cetak pesan
                    threadMessage(importantInfo[i]);
                }
            }
            catch (InterruptedException e)
            {
                threadMessage("belum selesai ne !!!");
            }
        }
    }

    public static void main(String[] args)
    {
        // waktu jeda sebelum interrupt
        // default waktu selama satu menit
        // coba ubah nilainya agar terjadi interrupt
        long patience = 1000 * 60;

        threadMessage("Memulai Thread MessageLoop");
        long startTime = System.currentTimeMillis();
        Thread t = new Thread(new MessageLoop());
        t.start();

        threadMessage("Nungguin Thread MessageLoop");
        //loop until MessageLoop thread exits
        while (t.isAlive())
        {
            threadMessage("tungguin yee...");

            try
            {
                //menunggu maksimal satu detik agar thread MessageLoop selesai
                t.join(1000);
            }
            catch (InterruptedException ex)
            {
                Logger.getLogger(SimpleThread.class.getName()).log(Level.SEVERE, null, ex);
            }

            if (((System.currentTimeMillis() - startTime) > patience) && t.isAlive())
            {
                threadMessage("Tired of waiting!");
                t.interrupt();

                try
                {
                    // menunggu thread MessageLoop sampai benar - benar selesai
                    t.join();
                }
                catch (InterruptedException ex)
                {
                    Logger.getLogger(SimpleThread.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

        }

        threadMessage("Akhirnya !!!");

    }

}

0 komentar:

Posting Komentar

 

©Copyright 2011 Teknik Informatika - DD | TNB