1)为什么在Java包中的文件中我应该在其中编写"包"内容?它不是间接地假设如果它在目录中,那么它在包中?
2)我来自C++世界.我总是从其他使用该类的文件中导入我需要的类的.h(我的意思是,我只想"显示"标题,而不是实现).但现在我对Java的进口感到有些困惑.这是如何在Java中完成的?
谢谢
当调用系统调用时,进程状态如何?
我的意思是,不要假设它是像读或写这样的 I/O 系统调用......
是进程本身执行内核代码,还是进程被挂起并且有一个“内核线程”执行系统调用处理程序(并且知道哪个进程称为(当前))?
我不确定是否从执行变为就绪,或从执行变为阻塞。
我对 Java 中 Timer 类的行为有疑问。这是代码: http: //pastebin.com/mqcL9b1n
public class Main {
public static void main(String[] args) {
Main m = new Main();
m.foo();
m = null;
}
public void foo() {
Timer t = new Timer();
t.schedule(new SysPrint(), 200);
}
}
class SysPrint extends TimerTask {
public void run() {
System.out.println("Yes!");
}
}
Run Code Online (Sandbox Code Playgroud)
发生的情况是,如果您运行该程序,它将打印“Yes!” 它不会做任何其他事情(程序不会结束)。
Java 文档说:在对 Timer 对象的最后一个实时引用消失并且所有未完成的任务都已完成执行之后,计时器的任务执行线程将正常终止(并成为垃圾收集的对象)。
正如我所看到的,在“foo()”函数结束后,对 Timer 对象的“最后一个实时引用”就消失了。唯一安排的任务就是“是!” 已执行的任务,所以我猜想在进程打印“是!”之后,Timer 对象应该结束并且进程应该终止。
这里发生了什么?
为什么我创建一个JFrame然后程序仍然运行,直到(即)我用窗口的小"退出按钮"关闭它?
我寻找这个答案,但我失败了.我唯一猜到的是,当我这样做时,new JFrame()它就像一个特殊的new,它在EDT中保留对象的引用,因此它将始终被引用(即使它是一个匿名的"new")并且它不会被删除垃圾收集器.然后,一旦触发了窗口关闭事件,就会取消引用并销毁该对象.