privatestaticint aa=0;privateLock lock =newReentrantLock();@ApiOperation(value ="-----------------------------------------")@ApiImplicitParams({@ApiImplicitParam(name ="Integer", value ="number")})@GetMapping("/test")publicResponseipOrderManagist(Integer number){for(Integer i =0; i < number; i++){test();}returnResponse.success();}publicvoidtest(){newThread(newRunnable(){@Overridepublicvoidrun(){
lock.lock();
aa = aa +1;
log.info(this+"-------"+ aa +"---------------");
lock.unlock();}}).start();}
java中多线程与synchronized的使用(笔记)
指定加锁对象,对给定对象/类加锁。
privatestaticint aa=0;// private Lock lock = new ReentrantLock();@ApiOperation(value ="-----------------------------------------")@ApiImplicitParams({@ApiImplicitParam(name ="Integer", value ="number")})@GetMapping("/test")publicResponseipOrderManagist(Integer number){for(Integer i =0; i < number; i++){test();}returnResponse.success();}publicvoidtest(){newThread(newRunnable(){@Overridepublicvoidrun(){synchronized(Integer.class){// 或者aa.getClass()
aa = aa +1;
log.info(this+"-------"+ aa +"---------------");}}}).start();}
修饰实例方法:作用于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁。
privatestaticint aa=0;// private Lock lock = new ReentrantLock();@ApiOperation(value ="-----------------------------------------")@ApiImplicitParams({@ApiImplicitParam(name ="Integer", value ="number")})@GetMapping("/test")publicResponseipOrderManagist(Integer number){for(Integer i =0; i < number; i++){test();}returnResponse.success();}publicvoidtest(){newThread(newRunnable(){@Overridepublicvoidrun(){qq();}}).start();}synchronizedvoidqq(){
aa = aa +1;
log.info(this+"-------"+ aa +"---------------");}