## synchronized优化
package cn.qqjx.thread;
import java.util.concurrent.TimeUnit;
/*
* synchronized优化
* 同步代码块中的语句越少越好
* 比较m1和m2
* @Auther wangpeng
* @Date 2021/1/8
*/
public class FineCoarseLock {
int count = 0;
synchronized void m1() {
//do sth need not sync
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
//业务逻辑中只有下面这句需要sync,这时不应该给整个方法上锁
count ++;
//do sth need not sync
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
void m2() {
//do sth need not sync
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
//业务逻辑中只有下面这句需要sync,这时不应该给整个方法上锁
//采用细粒度的锁,可以使线程争用时间变短,从而提高效率
synchronized(this) {
count ++;
}
//do sth need not sync
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
博客围绕synchronized优化展开,虽无具体内容,但可知核心聚焦于对synchronized进行优化,这在后端开发中保障线程安全等方面有重要意义。
1866

被折叠的 条评论
为什么被折叠?



