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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 线程同步 在大多数实际的多线程应用中, 两个或两个以上的线程需要共享对同一数据的存取。多个线程或者进程在读写一个共...
    Steven1997阅读 2,031评论 0 3
  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    胜浩_ae28阅读 5,245评论 0 23
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 3,087评论 1 18
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,637评论 11 349
  • 玉簪滑落发的空隙 穿透背脊的凉意 只一杯醉生梦死 化尽半生繁华
    玛诺奇朵的爱情阅读 212评论 0 0

友情链接更多精彩内容