Java 中可调用和可运行的区别
Java . lang . runnable是一个接口,将由一个类实现,该类的实例将由一个线程执行。有两种方法可以开始一个新的线程——子类线程和实现可运行。当一个任务仅通过run()Runnable的方法即可完成时,无需对线程进行子类化。
让我们讨论上述两个接口之间的差异,这是通过稍后以表格形式总结主要差异时单独讨论它们来定义的。
可调用界面
在一个可调用的接口中,它会抛出一个选中的异常并返回一些结果。这是即将到来的不返回值的 Runnable 接口的主要区别之一。在这个接口、中,它只是计算一个结果,否则如果做不到这一点,就会抛出一个异常。
public interface Callable<V>
{
V call() throws exception ;
}
- 它在“包中声明。
- 该接口还包含一个单一的无参数方法,称为 call() 方法
- 我们不能通过将 callable 作为参数传递来创建线程。
- Callable 可以返回结果。Callable 的 call()方法包含“抛出异常”子句,因此我们可以轻松地进一步传播检查过的异常。
*示例:*
Java 语言(一种计算机语言,尤用于创建网站)
**// Java Program to illustrate Callable interface
// Importing classes from java.util package
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
// Class
// Implementing the Callable interface
class CallableExample implements Callable {
// Main driver method
public static void main(String args[])
{
// public Object call() throws Exception
Random generator = new Random();
Integer randomNumber = generator.nextInt(5);
Thread.sleep(randomNumber * 1000);
return randomNumber;
}
}**
*可运行界面*
当实现此接口的对象用于创建线程时,启动线程会导致在单独执行的线程中调用对象运行方法。将军。这个 run()方法的约定是它可以采取任何行动。
**public interface Runnable
{
public abstract void run();
}**
- java.lang.Runnable 是一个接口,只定义了一个名为 *run()的方法。*
- 它用 Java 表示一个由线程执行的任务。
- 使用 Runnable 启动新线程有两种方法,一种是通过实现 Runnable 接口,另一种是通过子类化 thread 类。
- 如果您在另一个线程中执行某些计算任务,Runnable 不能返回计算结果,而这是必不可少的,Runnable 也不能抛出检查过的异常。
*例*
Java 语言(一种计算机语言,尤用于创建网站)
**// Java Program to implement Runnable interface
// Importing FileNotFound class from
// input output classes bundle
import java.io.FileNotFoundException;
// Class
// Implementing the Runnable interface
public class RunnableImpl implements Runnable {
// Main driver method
public static void main(String[] args)
{
// Run method
public void run()
{
// Display message when the thread executes
System.out.println(
Thread.currentThread().getName()
+ ", executing run() method!");
// Try block to check if any exception occurs
try {
throw new FileNotFoundException();
}
// Catch block to handle the exception
catch (FileNotFoundException e) {
// Display message
System.out.println("Must catch here!");
// Print the line number
// where exception occured
e.printStackTrace();
}
// Here forcefully it
int rem = 1 / 0;
}
}**
版权属于:月萌API www.moonapi.com,转载请注明出处