Synchronize锁粒度
生活随笔
收集整理的這篇文章主要介紹了
Synchronize锁粒度
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Synchronize鎖粒度
如果,a線程調用不同的方法,執行一個很長時間的任務
那么,b線程就必須等待很長的時間,才能執行
可以通過減小鎖的粒度,去優化代碼執行時間
package com.bjsxt.base.sync006;/*** 使用synchronized代碼塊減小鎖的粒度,提高性能**/ public class Optimize {public void doLongTimeTask() {try {System.out.println("當前線程開始:" + Thread.currentThread().getName() + ", 正在執行一個較長時間的業務操作,其內容不需要同步");Thread.sleep(2000);synchronized (this) {System.out.println("當前線程:" + Thread.currentThread().getName() + ", 執行同步代碼塊,對其同步變量進行操作");Thread.sleep(1000);}System.out.println("當前線程結束:" + Thread.currentThread().getName() + ", 執行完畢");} catch (InterruptedException e) {e.printStackTrace();}}public static void main(String[] args) {final Optimize otz = new Optimize();Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {otz.doLongTimeTask();}}, "t1");Thread t2 = new Thread(new Runnable() {@Overridepublic void run() {otz.doLongTimeTask();}}, "t2");t1.start();t2.start();}}運行
總結
以上是生活随笔為你收集整理的Synchronize锁粒度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Synchronize异常释放锁
- 下一篇: Synchronize锁对象