【发布时间】:2019-03-29 13:10:45
【问题描述】:
public class Sol {
static Map<Integer, List<String>> emap;
static List<Integer> sortSalaries(List<List<String>> workers) {
List<Integer> res = new ArrayList<Integer>();
emap = new HashMap<>();
for (List<String> e: workers)
emap.put(Integer.parseInt(e.get(0)), e);
for(List<String> worker: workers )
{
//accessing workers
.....
}
Collections.sort(res);
return res;
}
public static int dfs(int eid) {
List<String> employee = emap.get(eid);
int salary=0;
String ans = employee.get(3);
for (int i=0;i<ans.length();i=i+2)
{
// accesing emap
......
}
return salary;
}
}
我是否必须使用同步关键字才能使其线程安全。如果方法是同步的,我是否必须使用 Vector 和 Hashtable。
或者,如果我使用 Vector 和 Hashtable,将 emap 变量移动到 sortSalaries() 并将其传递给 dfs()。在这种情况下如果我不使用同步关键字可以吗..
【问题讨论】:
-
这个是线程的怎么办?
-
我看不到任何
run方法?这实际上是一个线程吗? -
这些函数是从线程中调用的......所以我想确保返回正确的数据
-
你为什么使用
static方法?创建此类的单个实例不适合您? -
@mzz:首先,你明白为什么这些方法如果从多个线程调用不是线程安全的吗?
标签: java