众所周知,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方式说白了就是弥补这个缺陷而设计出来的。所以具体使用哪种方法就根据你实际情况了。
最后介绍个学习网站:
http://gz.itcast.cn/
分享到:
相关推荐
1、Java有两种实现多线程的方式:通过Runnable接口、通过Thread直接实现,请掌握这两种实现方式,并编写示例程序。 2、多线程是并发执行的,交替占有cpu执行,请编写示例程序,并观察输出结果。 3、采用线程同步方法...
java多线程每个线程挨着打印ABC的4种实现方式,有4个线程t1、t2、t3、t4,t1打印A后t2打印A再t3打印A再t4打印A,然后从新回到t1打印B再t2打印B...t4打印B... 4个线程轮流打印abc... 一个线程可以理解为一个人,打印...
多线程两种实现方式Java,MLDN,实训课程中的多线程
java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号 java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号
JAVA语言实现:编写10个线程,第一个线程从1加到10,第二个线程从11加到20...第十个线程从91加到100,最后再把十个线程结果相加
java多线程实现大批量数据切分成指定份数的数据,然后多线程处理入库或者导出,线程的个数和每份数据的数量都可以控制
Java多线程实现异步调用实例。运行Main可以看到结果。main是主线程,另有A,B,C三个线程用不同的时间跑完。
Java多线程实现数据切割批量执行,实现限流操作。 java线程池Executors实现数据批量操作。 批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。...
java一些简单的多线程用法,适合初学者
java多线程实现TCP连接UDP聊天的聊天程序
用java平台利用java的多线程特点,编写进度条的现实以及当前时间的实时更新。
java多线程进度条
Java多线程实现.pdf
该文档总结了Java多线程相关的知识点,分享给大家,简单易懂!
适合初学者使用,Java多线程技术实现矩阵乘积计算
现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。 线程是指进程中的一个执行流程,一个进程中可以运行多个线程。...本文档提供Java多线程编程经验,方便广大Java爱好者研究学习Java多线程
java 多线程 其实就是每个线程都拥有自己的内存空间,多线程之间的通信,比例A线程修改了主内存(main方法的线程)变量,需要把A线程修改的结果同步到主线程中,这时B线程再从主线程获取该变量的值,这样就实现了...
java多线程实现一个控制台聊天室 java多线程实现一个控制台聊天室
线程的概念及简单实现博客源代码。想要学习更多有关于Java多线程的知识,请关注博客http://blog.csdn.net/yegongheng
java多线程实现生产者和消费者