Java 在我的例子中,为什么我需要尝试用投掷来接球?
如果方法被声明为抛出相同的异常,请有人帮助我理解为什么需要使用内部try-catchJava 在我的例子中,为什么我需要尝试用投掷来接球?,java,multithreading,Java,Multithreading,如果方法被声明为抛出相同的异常,请有人帮助我理解为什么需要使用内部try-catch public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(new Runnable() { public void run() { // TODO Auto-generated method stub
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
try {
producer();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
t1.start();
t1.join();
}
生产者的语法是
私有静态void producer抛出InterruptedException答案是您正在定义一个匿名类
Thread t1 = new Thread(new Runnable() {
public void run() {
try {
producer(); //This is called in run method!
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
调用producer的方法的声明为public void run,此方法不会引发选中的异常。因此,您必须抓住它。答案是您正在定义一个匿名类
Thread t1 = new Thread(new Runnable() {
public void run() {
try {
producer(); //This is called in run method!
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
调用producer的方法的声明为public void run,此方法不会引发选中的异常。因此,您必须捕获它。这是合乎逻辑的,因为您启动了新线程,如果它不是main方法,并且没有使用thread.join,那么在执行离开创建方法之后,新线程就可以生存。因此,您应该独立处理异常。这是合乎逻辑的,因为您启动了新线程,如果它不是main方法并且未使用thread.join,则在执行离开创建方法后,新线程可以继续运行。所以您应该独立处理异常。run不抛出InterruptedExceptionrun不抛出InterruptedExceptions,因为它是由于内部类而发生的。非常感谢你。这是由于内部阶级的原因。非常感谢你。