我刚刚读到“服务器如何处理多个请求”,最终得到了 java 多线程和多核 cpu。
在计算机是单核的时候,如果 java 同时有 2 个线程,那么 jvm 调度程序将负责为每个线程分配时间。因此,两个线程永远不会并行运行,而是利用理想时间(例如,如果线程在某些资源上被阻塞)。
但这是 java7 中多核和 fork/join 框架的情况吗?我的意思是我听说通过多核我们实际上可以实现并行性。所以,如果我有两个线程运行,两个核心cpu,并且每个线程都有一个单独的核心(尽管不能保证)那么它们实际上会是并行的,因为jvm调度程序仍然会导致时间交错吗?
如果这个问题很愚蠢,我很抱歉,但我真的不确定这个问题。请帮我理解!!
谢谢!乌尼
name
我在阅读有关 Spring 的内容时遇到了一个由带有和字段的抽象产品类组成的示例price
。
接下来,有一个Battery
类扩展了该类Product
并添加了一个rechargable
字段。然后,一个CDDrive
类(也)扩展Product
但添加一个capacity
字段。
在现实世界中,当我们经常拥有具有许多不同属性的产品时,如何对具有任意属性和字段的任意产品进行建模?为每个产品设置一个类是否有意义?
那么,你们能建议一种实现这一目标的模式吗?
谢谢,欧尼
这个问题在网上测试中被问到了我.在笛卡尔平面中给出了N个点.将给出整数K. 目的是找到包围至少K点的正方形(最小)区域.正方形的边应平行于轴.正方形的顶点应为整数.位于两侧的任何点都不被视为在广场内.
我只能解决K = N(即所有点都在正方形).
我的解决方案是 -
static int minarea(int[] x, int[] y, int k) {
//Find max y
int maxVal = Integer.MIN_VALUE;
for(int i : y){
if(i > maxVal){
maxVal = i;
}
}
//Find min y
int minVal = Integer.MAX_VALUE;
for(int i : x){
if(i < minVal){
minVal = i;
}
}
int yLength = (maxVal-minVal)+2;
//Find max x
maxVal = Integer.MIN_VALUE;
for(int i : x){
if(i > maxVal){
maxVal = i;
}
}
//Find min x
minVal …
Run Code Online (Sandbox Code Playgroud) 我之前写过一段代码,它从jar文件中动态加载类.因此,基本上可以在123-de目录中存在a.jar,在456-fg目录中存在另一个a.jar.现在,根据某些参数,我决定使用哪个jar,并从123-de目录或456-fg目录加载一个类说calc.java.
为此,我必须创建类加载器并使用这些类加载器来加载calc.java
当然,每个jar应该有一个类加载器,每个类在内存中加载单个类.
为此,我使用了一个存储类加载器/类的并发hashmap.说这个并发hashmap的关键是目录名.
所以,给定一个目录,我检查是否已经存在类加载器 - 如果不是我在一个上创建然后存储它.
if(classLoaderMap.get(directoryPath) == null){
rlock.lock();
try{
if(classLoaderMap.get(directoryPath) == null){
ClassLoader classLoader = // Create classLoader here.
classLoaderMap.put(directoryPath, classLoader);
}
}finally{
rlock.unlock();
}
}
Run Code Online (Sandbox Code Playgroud)
此代码已经过测试,运行正常.但今天我正在重新审视这段代码,并观察到我并不真正需要concurrenthashmap,因为我使用显式锁定来写入它.我只需要内存可见性,因为我在锁外读它.所以,我真的在想这样volatile hashmap
做了吗?我应该还原它(不要因为它已经测试过了)或者如果我保留它可以吗?