Java bluej Try/catch/exception
我会把我的三个问题贴在代码中出现的地方,也贴在这里 问题1什么是线程以及如何使用它们?Java bluej Try/catch/exception,java,Java,我会把我的三个问题贴在代码中出现的地方,也贴在这里 问题1什么是线程以及如何使用它们? 问题2“尝试”/“抓住”如何起作用? 问题3例外情况是什么?参见代码 提前感谢:) 线程是包含足够支持结构的对象,可以充当轻量级进程 进程就像一个正在执行的程序,但它是一个形式化的定义,是由操作系统管理的东西,它决定进程是否获得CPU时间 线程之所以像一个轻量级进程,是因为尽管它几乎独立于主程序分配CPU时间,但它并不能获得进程所获得的一切。它与进程中的其他线程共享内存,而实际进程则获得自己的私有内存空间 您
问题2“尝试”/“抓住”如何起作用? 问题3例外情况是什么?参见代码 提前感谢:)
线程是包含足够支持结构的对象,可以充当轻量级进程 进程就像一个正在执行的程序,但它是一个形式化的定义,是由操作系统管理的东西,它决定进程是否获得CPU时间 线程之所以像一个轻量级进程,是因为尽管它几乎独立于主程序分配CPU时间,但它并不能获得进程所获得的一切。它与进程中的其他线程共享内存,而实际进程则获得自己的私有内存空间 您添加的try/catch块用于捕获调用
Thread.sleep(…)
时抛出的已知声明异常。由于线程要求离开CPU至少40毫秒,因此有可能在它离开CPU时,程序关闭,或者其他线程出于其他原因告诉它“唤醒”。如果发生这种情况,Thread.sleep(…)
调用将不会正常完成睡眠,而是会使用InterruptedException异常终止调用
问题1:什么是线程,如何使用它们
当您运行代码时,它通常都是线性运行的。假设您请求用户输入。程序停止,然后等待用户输入。如果用户从未输入过什么呢?节目永远不会继续。拥有多个线程允许您在等待用户输入时在后台执行操作。它还允许您将工作划分为多个同时进行的方法,以利用多个核心,尽管如果没有适当的算法来划分工作,您不会对自己有多大帮助
问题2“尝试”/“抓住”如何起作用
在Java和许多其他语言中,try-and-catch是如何处理通常认为可以恢复的可能错误的。例如,如果你向用户索要一个号码,他可能会给你一封信,因此你不会向用户索要号码,而是试图向用户索要一个号码。如果用户犯了错误,你抓住他的错误,然后追索。这不仅仅适用于用户输入,假设您打开了一个文件,但该文件不存在,或者发生了导致读取操作失败的其他错误。这种可能性要求你去尝试,而不是去做
问题3例外情况是什么
异常是方法在出现错误时抛出的东西。在Java中有两种类型的异常,选中和未选中。大多数未检查的异常是由于程序员错误造成的,例如数组超出范围。然而,常见的异常,如试图打开一个文件,但您无法打开,因为它不存在,这些异常被称为检查异常,这意味着您必须用try-catch来包围它们,这对于Java来说是非常独特的
非常感谢!,非常有用,我将阅读这些链接,但还有一个问题,这是一种测量时间的方法,比如,每1秒在显示的数字上加1并更新,还是有更好的方法?你可以使用Thread.sleep(…)来测量时间,这只是一种非常粗糙的方法。当您请求操作系统从CPU内核中删除线程时,通常可以快速处理该请求;但是,在请求的时间之后很少会返回CPU核心,因为该CPU核心上可能有其他内容。如果内核上有其他东西,操作系统可能会根据许多其他项目给它更多的时间。另外,睡眠时间不是循环中的全部时间,实际代码的执行也需要时间。有更好的方法来编写时钟。是的,我在一节课上写了一个时钟显示,但您需要执行一个方法来添加1,实际上我不知道如何实现时间;)如果你想要实时计时,大多数计算机中都有一种芯片,它包含一个不可更换的嵌入式电池,称为实时时钟。它已经被微调为滴答作响,像一个大计数器一样一次滴答作响。然后,您可以根据经过的滴答声的数量和某个参考点来计算当前时间,在该参考点上,您知道前一滴答声的时间是多少。这种时钟访问成本很高,所以大多数计算机在启动时都会参考它,但随后会使用更便宜、更快的时钟。更便宜的时钟在断电时会失去时间,而且更容易根据墙上的电源质量漂移。我一定会很快检查一下,因为现在我发现了这个问题:我要弄清楚每件事是如何工作的,然后自己尝试一下,谢谢你的时间:)
public void start() {
// Question 1: What are these threads and how do i implement them?
Thread frameTiming = new Thread (this);
frameTiming.start ();
}
public void run() {
while (true) {
xleft-=10;
yleft-=10;
xleft2+=10;
yleft2+=10;
i-=5;
repaint();
// Question 2: what does try/catch do?
try {
Thread.sleep(40);
// question3: what does this exception do exactly? :0
} catch (Exception e) {
}
}