New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2019-05-23:分别讲讲 final,static,synchronized 关键字可以修饰什么,以及修饰后的作用? #61
Comments
static
public class StaticTest {
public static void a(){
}
public static void main(String[]args){
StaticTest.a();
}
}
public class StaticTest {
private static int a ;
private static int b;
static {
a = 1;
b = 2;
} final
private final int aa = 1;
static {
a = 1;
b = 2;
}
private void init(){
aa = 2;//报错编译器会提示 不能赋值。。
}
public static void main(String[]args){
StaticTest.a();
}
class StaticTest2 extends StaticTest{
public final void a(){ //这边就会编译器提示不能重写
}
}
synchronizedsynchronized 是 Java 中解决并发问题的一种最常用的方法,也是最简单的一种方法。synchronized 的作用主要有三个:
private synchronized void init(){
aa = 2;
}
public final void a(){
synchronized (lock){
//代码
}
}
@Override
public void run() {
} |
final :可以修饰 类,方法,字段。
static :可以修饰内部类,方法,字段。
synchronized 可以修饰 方法,代码块
|
final, static都可以修饰类,方法,字段;synchronized可以修饰方法,代码块。
|
前面的大佬说的都挺好的 我也复习一哈 final 可修饰 类、变量、方法 修饰类,不可被继承,比如String类 static 可修饰 类、变量、方法 修饰内部类,不需要外部类实例,当做普通类使用 synchronized 代码块、方法,看具体代码位置,来实现代码的同步 |
。补充一些 |
你好,我有一个疑问,在学习synchronized时,很多人都说同步代码块是非常脆弱的,但是我并不明白为什么说它脆弱呢? |
|
synchronized关键字最主要有以下3种应用方式 修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁 修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁 修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。 |
synchronized https://juejin.im/post/5c3c5e0ce51d4551d04511c9 |
final 可修饰 类、变量、方法 修饰类,不可被继承,比如String类 static 可修饰 类、变量、方法 修饰内部类,不需要外部类实例,当做普通类使用 synchronized 代码块、方法,看具体代码位置,来实现代码的同步 修饰静态方法, 锁定Class对象 |
@guosen ### synchronized 不能解决重排序问题吧, |
synchronized 保证的单线程下的as-if-serial语义,所以保证的是有序性 并不能解决重排序问题 |
volatile保证的是可见性,不是有序性 |
这是来自QQ邮箱的假期自动回复邮件。
|
这是来自QQ邮箱的假期自动回复邮件。
您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。
|
之前面字节,有被问到synchronized的底层实现… |
No description provided.
The text was updated successfully, but these errors were encountered: