Java中三种创建线程的方式有何区别
Java中三种创建线程的方式有何区别
-
继承Thread类 子类继承Thread类具备多线程能力 启动线程:创建子类实例,直接调用父类Thread的start方法 缺点:OOP单继承的局限性 实现Runnable接口 实现Runnable接口具备多线程能力 创建线程:向Thread对象传入目标对象,通过Thread对象调用start方法 优点:避免了OOP单继承的局限性,灵活方便,方便同一个对象被多个线程使用() 实现Callable接口 实现Callable接口具备多线程能力 启动线程:需要创建执行服务,提交任务执行,最后还需要关闭服务。(启动线程的方式不止这一种) 优点:可以获取执行结果;声明式的抛出异常,减少了了某些情况下的程序开发复杂度; 与Runnable接口的区别: 1. 实现Callable接口需要实现call()方法,而实现Runnable接口需要实现run()方法 2. Callable和Runnable都可以应用于executors,而Thread类只支持Runnable. 3. Callable与executors联合在一起,在任务完成时可立刻获得一个更新了的Future。而Runable需要自己处理。 注:Future接口,一般用于取回Callable执行的状态。其中的主要方法: 1.cancel(),取消Callable的执行,当Callable还没有完成时。 2.get(),获得Callable的返回值. 3.isCanceled(),判断是否取消了. 4.isDone(),判断是否完成.
上一篇:
IDEA上Java项目控制台中文乱码