我有两个并行的继承链:
Vehicle <- Car
<- Truck <- etc.
VehicleXMLFormatter <- CarXMLFormatter
<- TruckXMLFormatter <- etc.
Run Code Online (Sandbox Code Playgroud)
我的经验是,并行继承层次结构随着它们的增长而成为一种维护问题.
即不向toXML(), toSoap(), toYAML()我的主要类添加方法.
如何在不违反关注点分离概念的情况下避免并行继承层次结构?
我用a ExecutorService来执行任务.此任务可以递归地创建提交给它的其他任务,ExecutorService这些子任务也可以这样做.
我现在遇到的问题是,在我继续之前,我要等到所有任务完成(即所有任务都完成并且他们没有提交新任务).
我不能ExecutorService.shutdown()在主线程中调用,因为这可以防止新任务被接受ExecutorService.
ExecutorService.awaitTermination()如果shutdown没有被召唤,呼叫似乎什么都不做.
所以我有点卡在这里.ExecutorService要看到所有工人都闲着,这不是很难,是吗?我能想出的唯一不合理的解决方案是直接使用a ThreadPoolExecutor并getPoolSize()偶尔查询它.这样做真的没有更好的方法吗?
我稍微感到困惑之间的差异Asynctask,Thread,Service,Loader在Android系统.
我知道它是如何工作的.但我仍然不明白我应该使用什么以及何时使用.
我使用Android工作了3年,并且通常仍然AsyncTask用于所有后台任务(有时候用于Thread).但是很多人说"Asynctask已经过时了",不建议使用它们.他们还建议使用robospice或Volley.
那么,AsyncTask真的很糟糕,我应该使用框架进行网络任务?我应该将什么用于后台(而不是网络)任务?
最近我在求职面试时被问到这个问题,我无法回答.那么,java.io中最常用的模式是什么?它是如何使用的?常见的Java库中使用的其他模式有哪些?
以前我总是认为当长度未知时,Vector可用于非描述对象.据我所知,我认为它也是线程安全的
什么是Vector不应该再使用的改变,替代方案是什么?
我正在研究Java 8接口中的新虚拟扩展方法:
public interface MyInterface {
default String myMethod() {
return "myImplementation";
}
}
Run Code Online (Sandbox Code Playgroud)
我的目的是允许接口随着时间的推移而发展,以及多重继承位,但它们看起来非常像我的抽象类.
如果你正在做新的工作,抽象类优先于扩展方法来提供"接口"的实现,还是这两种方法在概念上是等价的?
我目前遇到很长时间的垃圾收集问题.请参阅以下内容.我目前的设置是我使用-Xms1g和-Xmx3g.我的应用程序使用的是java 1.4.2.我没有设置任何垃圾收集标志.从它的外观来看,3gb是不够的,我真的有很多垃圾收集对象.
题:
我应该改变我的垃圾收集算法吗?我应该用什么?是否更好用-XX:+UseParallelGC or -XX:+UseConcMarkSweepGC
或者我应该使用这种组合
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC
Run Code Online (Sandbox Code Playgroud)
占用内存的主要是报告数据而不是缓存数据.此外,该机器有16GB的内存,我打算将堆增加到8GB.
这两个选项有什么区别,因为我仍然觉得很难理解.该机器有多个处理器.我可以接受长达5秒的点击,但30到70秒真的很难.
谢谢您的帮助.
Line 151493: [14/Jan/2012:11:47:48] WARNING ( 8710): CORE3283: stderr: [GC 1632936K->1020739K(2050552K), 1.2462436 secs]
Line 157710: [14/Jan/2012:11:53:38] WARNING ( 8710): CORE3283: stderr: [GC 1670531K->1058755K(2050552K), 1.1555375 secs]
Line 163840: [14/Jan/2012:12:00:42] WARNING ( 8710): CORE3283: stderr: [GC 1708547K->1097282K(2050552K), 1.1503118 secs]
Line 169811: [14/Jan/2012:12:08:02] WARNING ( 8710): CORE3283: stderr: [GC 1747074K->1133764K(2050552K), 1.1017273 secs]
Line 175879: [14/Jan/2012:12:14:18] WARNING ( 8710): CORE3283: stderr: [GC 1783556K->1173103K(2050552K), 1.2060946 secs]
Line 176606: [14/Jan/2012:12:15:42] WARNING ( 8710): CORE3283: …Run Code Online (Sandbox Code Playgroud) java performance garbage-collection g1gc concurrent-mark-sweep
Storm如何与Hadoop相比?Hadoop似乎是开源大规模批处理的事实标准,Storm有没有优于hadoop的优势?还是他们完全不同?
我的代码片段:
ExecutorService executor = Executors.newSingleThreadExecutor();
try {
Task t = new Task(response,inputToPass,pTypes,unit.getInstance(),methodName,unit.getUnitKey());
Future<SCCallOutResponse> fut = executor.submit(t);
response = fut.get(unit.getTimeOut(),TimeUnit.MILLISECONDS);
} catch (TimeoutException e) {
// if the task is still running, a TimeOutException will occur while fut.get()
cat.error("Unit " + unit.getUnitKey() + " Timed Out");
response.setVote(SCCallOutConsts.TIMEOUT);
} catch (InterruptedException e) {
cat.error(e);
} catch (ExecutionException e) {
cat.error(e);
} finally {
executor.shutdown();
}
Run Code Online (Sandbox Code Playgroud)
我应该如何处理InterruptedException和ExecutionException代码?
在什么情况下,抛出这些异常?
java multithreading future executorservice interrupted-exception
Hadoop架构中的Namenode是单点故障.
拥有大型Hadoop集群的人如何应对这个问题?
是否有一个行业认可的解决方案运行良好,其中一个辅助Namenode接管以防主要的一个失败?
java ×7
hadoop ×2
android ×1
apache-storm ×1
arraylist ×1
concurrency ×1
future ×1
g1gc ×1
hadoop-yarn ×1
hadoop2 ×1
hdfs ×1
inheritance ×1
interface ×1
io ×1
java-8 ×1
mapreduce ×1
oop ×1
performance ×1
streaming ×1
vector ×1