Java中线程同步的简单用法

864 次查看

应用场景:应用程序需要新建若干线程进行事务处理,这些线程处理完毕后,应用程序会进行一些后续的操作。

解决办法:使用Object.wait(),Object.notify()方法。Object.wait()方法会阻断当前线程的执行,直到其他线程调用Object.notify()

于是可以很快的写出一个示例程序:

public static void main(String[] args) {
    final Object syncObj = new Object();

    Thread thread = new Thread() {
        public void run() {
            try {
                Thread.sleep(3000);

                synchronized(syncObj) {
                    syncObj.notify();
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };

    thread.start();

    synchronized(syncObj) {
        try {
            syncObj.wait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    System.out.println("Exit");
}

 

调用wait和notify方法前,一定要用synchronized(syncObj),否则会抛出IllegalMonitorStateException。

有空再写写Concurrence Util里的工具类,简化上面的操作。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...
本文目前尚无任何评论.

发表评论

XHTML: 您可以使用这些标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">