首页 > 代码库 > java:synchronized 同步代码块
java:synchronized 同步代码块
synchronized:利用上锁实现数据同步,避免多线程操作的情况下,数据出现异常。
当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。
另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
在代码块前加上 synchronized关键字,则此代码块就成为同步代码块,
格式:
synchronized(同步对象){ 需要同步的代码; }
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; } } } } }
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(); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。