Java多线程之Synchronized对象锁

JAVA的synchronized关键字为线程加锁,目的是保证数据执行的一致性。
防止多个线程同时操作一个对象或者数据,造成数据混乱。

synchronized对象锁示例

public class RunTest implements Runnable {
    static RunTest rt =  new RunTest();
    static int i = 0;
    @Override
    public void run() {
        // TODO Auto-generated method stub  
        // 对象锁代码块形式
        synchronized(this){ // 启动后,线程执行完毕后,再执行下一个的顺序执行。
            System.out.println(i + "-->" + Thread.currentThread().getName());
            try {
                Thread.sleep(3000L);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println(i + "-->" + Thread.currentThread().getName() +" end");
        }  
    }

    public static void main(String[] args) throws InterruptedException {
        // TODO Auto-generated method stub 
        Thread t1 = new Thread(rt);
        Thread t2 = new Thread(rt); 
        t1.start();
        t2.start(); 
//       t1.join();// 线程执行完毕之后,才继续执行主程序内容。 
//       t2.join();
                  // 第二种方法,线程执行完毕之后,才继续执行主程序内容。 
         while(t1.isAlive() || t2.isAlive()){ 
         } 
        System.out.println("-->" + i); 
    }

}

执行效果输出

0-->Thread-0
0-->Thread-0 end
0-->Thread-1
0-->Thread-1 end
-->0

你可能感兴趣的:(Java多线程之Synchronized对象锁)