Simple Thread di Java (2)

Posted: January 26, 2009 in Java, Programming
Tags: ,

Nah, berikut ini contoh penggunaan thread lainnya :

/*
 * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
 * ditulis ulang oleh Reza Adhitya dengan berbagai macam perubahan
 */

package simpethread2;

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&#91;i&#93;);
                }
            }
            catch (InterruptedException e)
            {
                threadMessage("belum selesai ne !!!");
            }
        }
    }

    public static void main(String&#91;&#93; 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("nungguin sampai bosen...");

            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 !!!");

    }

}

Nah, pada contoh program diatas terdapat fungsi Join(). Fungsi ini digunakan kepasa sebuah thread untuk menunggu thread lain yang sedang berjalan. Konsepnya hampir sama dengan fungsi Sleep(). Namun kita bisa tidak menspesifikkan waktunya (tanpa parameter).

Comments
  1. Mapleaftelm says:

    first time here, test posting only

  2. aiiya says:

    materinya di ambil ya!!!
    thanks

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s