最近突然想到一个问题:Runnable 是如何允许我自定义执行内容而进行多线程处理的?
首先看使用 Runnable 创建多线程的方法:
Runnable runnable = new Runnable() { @Override public void run() { System.out.println("hello~"); } }; Thread thread = new Thread(runnable); thread.run();
我们可以看到首先创建了一个 Runnable 接口实例,Runnable 接口源代码如下:
TestIF.java 该接口仅负责存储一个 String 字符串: public interface TestIF { String str(); } Main.java public class Main { public static void main(String[] args) { //创建一个TestIF接口实例并返回 TestIF testIF = IF(); //传递给另一个方法并输出 PrintIF(testIF); } public static TestIF IF() { TestIF testIF = new TestIF() { @Override public String str() { return "SUCCESSFUL!"; } }; return testIF; } public static void PrintIF(TestIF testIF) { System.out.println("Has received: " + testIF.str()); } } 输出结果 Has received: SUCCESSFUL! 总结 来自 jiany 的订正: 抽象是模板,接口是契约。接口规定了这个类可以实现的功能。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于