由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 关于java synchronized statement和static method or variable
相关主题
问一道C# interview testing quesiton4sum o(n^2)超时
Google电面被拒,郁闷中问一下OJ的Anagrams那道题
gg面试题发个evernote的code challenge
请问一道special singleton class的题Amazon常见设计题——设计电话簿求解
twoSum来讨论个uber的电面题
Linked电面分享,挺好的题 应该已挂Leetcode的Substring with Concatenation of All Words超时。
facebook一题lengthOfLongestSubstring 最后一个test case总是超时
share int2roman and roman2int java version上午偷闲把TopKFrequentWords写出来了
相关话题的讨论汇总
话题: string话题: hashmap话题: msg2话题: msg1
进入JobHunting版参与讨论
1 (共1页)
f********a
发帖数: 165
1
import java.util.HashMap;
public class MyClass {

public static HashMap hashMap = new HashMap Integer>();
private String s = new String();

public void log1(String msg1, String msg2){
synchronized(hashMap){
System.out.println(msg1);
System.out.println(msg2);
}
}

public void log2()
{
hashMap.put(new String("123"), new Integer(1));
}
public static void log3(String msg1, String msg2){
synchronized(new String()){
System.out.println(msg1);
System.out.println(msg2);
}

}
public static void log4(String msg1, String msg2){
synchronized(String.class){
System.out.println(msg1);
System.out.println(msg2);
}
}
public static void log5(String msg1, String msg2){
String s = new String();
}
}
在non-static的method里面,比如log1,我们经常用synchronized(this)或者
synchronize(object),这时候synchronized是apply在this或者object这个instance上
面,如果如题中所示,synchronized(hashMap) hashMap是个static variable,那
synchronized是apply在HashMap的class object上面吧? 那如果两个thread,一个call
log1,同时一个call log2,如果log1先执行,然后log2需要等待log1执行完吧,因为
HashMap的class object被lock住了,hashMap.put是不能被执行的吧。
在static method里面,比如log3,是不能call instance variable s的,但是可以如题
中一样new String(), 但其实如果有多个thread call log3, 互相之间不会有影响吧?
最后如果我们用synchronized(String.class) 是String 的class object被lock住了,
当1个线程call MyClass1.log4, 另一个线程call MyClass1.log5,如果log4执行到
synchronized(String.class),log5到String s = new String();是不能执行的,因为
String 的class object被lock住了,是不是这样?
有点乱,不好意思。
f********a
发帖数: 165
2
自己顶一个。
g*****g
发帖数: 34805
3
Object.

【在 f********a 的大作中提到】
: import java.util.HashMap;
: public class MyClass {
:
: public static HashMap hashMap = new HashMap: Integer>();
: private String s = new String();
:
: public void log1(String msg1, String msg2){
: synchronized(hashMap){
: System.out.println(msg1);

1 (共1页)
进入JobHunting版参与讨论
相关主题
上午偷闲把TopKFrequentWords写出来了twoSum
Leetcode第30题真心不容易Linked电面分享,挺好的题 应该已挂
Amazon一道synchronization的面试题facebook一题
问道题,谁给个效率高点的解法share int2roman and roman2int java version
问一道C# interview testing quesiton4sum o(n^2)超时
Google电面被拒,郁闷中问一下OJ的Anagrams那道题
gg面试题发个evernote的code challenge
请问一道special singleton class的题Amazon常见设计题——设计电话簿求解
相关话题的讨论汇总
话题: string话题: hashmap话题: msg2话题: msg1