我必须编写一个被认为是"永远"运行的程序,这意味着它不会定期终止.到目前为止,我总是编写将在一天结束时运行并终止的程序.程序必须进行一些同步,暂停n分钟而不是再次同步.
AFAIK我的当前实现应该没有问题,理论上它应该运行得很好,但我缺乏任何实际经验.
那么有没有"模式"或最佳实践来编写具有很长运行时间的非常强大且资源有效的Java程序?例如一个月/一年的运行时间之后会出现什么问题?
一些背景:
提前致谢
我正在使用tinylog来满足我的日志记录需求,并且想知道是否有人知道登录到文件和控制台的方法。当我使用下面的配置时,我只能在控制台上获得输出。当我删除.writer(new ConsoleWriter())日志记录时,仅对文件进行记录(正如人们所期望的那样)。
Configurator.currentConfig()
.level(LoggingLevel.valueOf("TRACE"))
.writer(new RollingFileWriter(file,10))
.writer(new ConsoleWriter())
.activate();
Run Code Online (Sandbox Code Playgroud) 我编写了一个使用Swing进行GUI的应用程序,通过GUI接受文件,解析输入,保存DataList并将其发送到服务器.我关心我的程序的整个设计,我认为这不是很好.我正在使用Netbeans来设计GUI,并且有一个MainClass启动该GUI 的类,并且具有对GUI的静态引用.还有一些ExecClasses做上述解析和发送数据.
+----------------------+
| MainClass (static) |
|----------------------|
+------+ -DataList +-----+
| | | |
static| +-+--------------+-----+ |static
reference | | |reference
| |new () | new () |
| | | |
| | | |
+-+--------v----+ +--v-----------+--+
| | | |
| SwingGUIClass | | ExecClasses |
| | | |
+--/\-----------+ +-----------------+
|
Input file
这里简要概述MainClass:
public class MainClass {
private static MainClass mainClass;
private static ExecClass1 ex1;
private …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个通用容器,我必须使用一个数组.我收到以下错误:
Exception in thread "main" java.lang.ClassCastException:
[Ljava.lang.Object; cannot be cast to [Ljava.lang.Comparable;
Run Code Online (Sandbox Code Playgroud)
这是我的代码的一部分:
class MinFo<T extends Comparable> {
private final T[] array;
MinFo(int size){
array = (T[]) new Object[size];
}
T get(){
if(this instanceof Comparable){
int tmpPos = getNotNull();
T tmp = array[tmpPos];
int pos;
for(pos = tmpPos ; pos < array.length; getNotNull()){
if(tmp.compareTo(array[pos]) > 0)
tmp = array[pos];
}
Run Code Online (Sandbox Code Playgroud)
这导致我从类声明中删除"extends Comparable".现在我有一个不同的错误:
error: cannot find symbol
if(tmp.compareTo(array[pos]) > 0)
^
symbol: method compareTo(T)
location: variable tmp of type …Run Code Online (Sandbox Code Playgroud)