JAVA多线程:什么时候使用哪种实现方式
来源:互联网 发布:js获取当前页面内容 编辑:程序博客网 时间:2024/05/17 08:50
众所周知,JAVA里实现多线程有两种方式。
一是继承Thread,覆盖run()方法:
public class ThreadTest { public static void main(String[] args) { new MyThread().start(); }}class MyThread extends Thread { @Override public void run() { System.out.println("Thread.run()"); super.run(); }}
二是实现Runnable接口,实现run()方法:
public class ThreadTest { public static void main(String[] args) { new Thread(new MyRunnable()).start(); }}class MyRunnable implements Runnable { @Override public void run() { System.out.println("Runnable.run()"); }}
这两种都是常用方法,那么问题来了,我们什么时候用哪种方式?sun公司当初为什么会设计两种实现方式?
很明显,我们在使用继承Thread方式时,有一个很大的缺点,就是我们继承了Thread后就不能继承其他类了。但是如果我们实现Runnable的话,恰好可以解决这个问题。
实际上,我们的Thread类里面有这么一段代码:
/* What will be run. */ private Runnable target; public void run() { if (target != null) { target.run(); } }
这是Thread类里面的run()方法,如果target(即Runnable对象)非空的话,它会直接调用Runnable的run()方法。
而Thread()类的run()方法是实现Runnable接口的:
publicclass Thread implements Runnable {
所以无论是哪种实现方式的run()其实都是一样的,但是Runnable方式有很明显的优势,就是它可以继承别的类而非局限于Thread类,Runnable方式说白了就是弥补这个缺陷而设计出来的。所以具体使用哪种方法就根据你实际情况了。
最后介绍个学习网站:Here
- JAVA多线程:什么时候使用哪种实现方式
- java多线程------实现多线程两种方式
- 什么时候该使用多线程
- 什么时候使用多线程
- 什么时候使用多线程
- 什么时候使用多线程
- 什么时候使用多线程
- Java多线程:实现方式
- JAVA多线程实现方式
- JAVA多线程实现方式
- JAVA多线程实现方式
- java多线程实现方式
- java多线程实现方式
- 【Java】多线程实现方式
- JAVA多线程实现方式
- Java 多线程--实现方式
- java多线程实现方式
- 实现java多线程方式
- Map/Reduce 算法面试问题列表
- memcached源码分析之内存管理 -- slab allocator(1)
- ARM架构kprobe应用及实现分析(7.0 自动显示参数的值)
- LINUX下搭建FTP服务器
- Android开发 静默安装,避免了更新安装的时候跳出的对话框,后台安装
- JAVA多线程:什么时候使用哪种实现方式
- android静默安装探讨
- CreateThread, AfxBeginThread,_beginthread, _beginthreadex的区别
- 在android中静默安装应用
- Hibernate_根据配置文件反向生成表格
- xml学习笔记二--约束
- hdu 1709 The Balance (dp)
- 解决问题的思路
- 项目4:新闻聚合