码迷,mamicode.com
首页 > 编程语言 > 详细

java:synchronized 同步代码块

时间:2014-06-03 14:10:33      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

synchronized:利用上锁实现数据同步,避免多线程操作的情况下,数据出现异常。

当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。

另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。

 

在代码块前加上 synchronized关键字,则此代码块就成为同步代码块,

格式:

synchronized(同步对象){
需要同步的代码;
}
bubuko.com,布布扣
class MyThread implements Runnable
{
    int i = 100;
    public void run(){
        while(true){    //并不是锁止状态,t1,t2同时进入
            System.out.println("-------------"+Thread.currentThread().getName());
            synchronized(this){        //如t1锁住,就算t2抢到cpu也进不去
                System.out.println(Thread.currentThread().getName() + i);
                i--;
                if(i<0){
                break;
                }
            }
        }
    }
}
bubuko.com,布布扣
bubuko.com,布布扣
class Test
{
    public static void main(String args[]){
        MyThread myThread = new MyThread();
        //生成两个Thread对象,共用一个线程体
        Thread t1 = new Thread(myThread);
        Thread t2 = new Thread(myThread);

        t1.setName("线程a");
        t2.setName("线程b");
        t1.start();
        t2.start();
    }
}
bubuko.com,布布扣

 

java:synchronized 同步代码块,布布扣,bubuko.com

java:synchronized 同步代码块

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/tinyphp/p/3759608.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!