java 多线程 继承Thread和实现Runnable的区别
1)继承Thread:
public class ThreadTest extends Thread
{
private int count;
private String name;
public ThreadTest(int count,String name){
this.count = count;
this.name = name;
}
public void run()
{
while(count>0)
{
System.out.println(name+"买票 "+count--);
}
}
public static void main(String []args)
{
ThreadTest t1 = new ThreadTest(10,"1号窗口");
ThreadTest t2 = new ThreadTest(10,"2号窗口");
t1.start();
t2.start();
}
}
运行结果:
1号窗口买票 10
1号窗口买票 9
1号窗口买票 8
2号窗口买票 10
1号窗口买票 7
2号窗口买票 9
1号窗口买票 6
2号窗口买票 8
1号窗口买票 5
2号窗口买票 7
1号窗口买票 4
2号窗口买票 6
1号窗口买票 3
2号窗口买票 5
1号窗口买票 2
2号窗口买票 4
1号窗口买票 1
2号窗口买票 3
2号窗口买票 2
2号窗口买票 1
2)实现Runnable接口
public class hello implements Runnable{
private int ticket=19;
@Override
public void run() {
for(int i=0;i<20;i++){
if(this.ticket >0){
System.out.println(Thread.currentThread().getName()+"正在买票"+this.ticket--);
}
}
}
public static void main(String[] args){
hello h1 = new hello();
new Thread(h1,"3号窗口").start();
new Thread(h1,"1号窗口").start();
new Thread(h1,"2号窗口").start();
}
}
运行结果:
1号窗口正在买票19
2号窗口正在买票18
3号窗口正在买票19
2号窗口正在买票16
1号窗口正在买票17
2号窗口正在买票14
3号窗口正在买票15
2号窗口正在买票12
1号窗口正在买票13
2号窗口正在买票10
3号窗口正在买票11
2号窗口正在买票8
1号窗口正在买票9
2号窗口正在买票6
3号窗口正在买票7
2号窗口正在买票4
1号窗口正在买票5
2号窗口正在买票2
3号窗口正在买票3
1号窗口正在买票1
从上面的运行结果可以看出:继承Thread实现的模式是 定义多个线程,各自完成各自的任务. 实现Runnable实现的模式是 定义多个线程,实现一个任务.
其实在实现一个任务用多个线程来做也可以用继承Thread类来实现只是比较麻烦,一般我们用实现Runnable接口来实现,简洁明了。
大多数情况下,如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口。
java 多线程 继承Thread和实现Runnable的区别的更多相关文章
- java中的线程问题(三)——继承Thread VS 实现Runnable的区别
从java的设计来看,通过继承Thread或者实现Runnable接口来创建线程本质上没有区别,从jdk帮助文档我们可以看到Thread类本身就实现了Runnable接口,如果一定要说它们有什么区别, ...
- Java 多线程之 Thread 类 和 Runnable 接口初步使用
目录 Thread 类 Thread之定义线程类 Thread之开启线程 Runnable 接口 Runnable 之定义线程类 Runnable 之开启线程 @ Thread 类 Thread 类是 ...
- java中继承thread类的其他类的start()方法与run()方法
java中继承thread或者实现runnable接口的类必须重写run()方法. 如果其执行了start()方法,其实就是启动了线程的run()方法. 注意:如果是实现runnable接口的类是没有 ...
- (转)多线程——继承Thread 类和实现Runnable 接口的区别
java中我们想要实现多线程常用的有两种方法,继承Thread 类和实现Runnable 接口,有经验的程序员都会选择实现Runnable接口 ,其主要原因有以下两点: 首先,java只能单继承,因此 ...
- 2018.3.3 多线程中继承Thread 和实现Runnable接口 的比较(通过售票案例来分析)
多线程中继承Thread 和实现Runnable接口 的比较(通过售票案例来分析) 通过Thread来实现 Test.java package com.lanqiao.demo4; public cl ...
- Java 多线程(Thread)学习
多线程:就是进程的扩展,实现并发.一个进程可以包含多个线程,进程一般是由操作系统控制,而线程就是由程序员控制的,所以作为编程人员做好线程是我们的重点. 线程和进程一样分为五个阶段:创建.就绪.运行.阻 ...
- C#异步和多线程以及Thread、ThreadPool、Task区别和使用方法
本文的目的是为了让大家了解什么是异步?什么是多线程?如何实现多线程?对于当前C#当中三种实现多线程的方法如何实现和使用?什么情景下选用哪一技术更好? 第一部分主要介绍在C#中异步(async/awai ...
- Java通过继承thread类与实现Runnable接口实现多线程的区别
Java中线程的创建有两种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过实现Runnable接口,实例化Thread类 一.通过继承T ...
- Java基础知识强化之多线程笔记05:Java中继承thread类 与 实现Runnable接口的区别
1. Java中线程的创建有两种方式: (1)通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中. (2)通过实现Runnable接口,实例化Thread类. 2. ...
随机推荐
- MFC 滑动条的重绘
MFC自带的滑动条的样子是这样的. 比较难看,所以需要重绘下,重绘后的样子是这样的. 代码如下: CustomSliderCtr.h #pragma once // CCustomSliderCtr ...
- Linux中不同主机建立免登陆
ssh-keygen -t rsa scp /root/.ssh/id_rsa.pub root@192.168.0.236:/root/.ssh/authorized_keys cat /root ...
- 何为HDFS?
该文来自百度百科,自我收藏. Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点.但同时, ...
- dbca建库sys用户被锁
奇怪问题:dbca建库sys用户被锁, 点击密码管理报账户被锁 而且在服务器上无法进行操作系统验证登陆,经过一番检查发现oracle用户和grid用户没有在dba组里 解决: 1.把oracle用户和 ...
- JS--该死的&&和||
近段时间搞前端js,零零星星的看了一些框架源码,发现大量存在&&和||,其语法看的我是头冒青烟,也不知道怎么回事,度娘搜吧,现在写下来,以防忘掉. 先来约束一下用词:有一表达式A : ...
- WiX Toolset 教程索引页
注意:虽然WiX Toolset功能强大,但其学习曲线相对较高.请慎重选择: 若没有足够时间.没心思搞的请绕行至inno setup.installshield.nisi.setupfactory.. ...
- Android Studio导入第三方类库的方法(转)
转自:链接 本人也刚刚开始尝试做android app的开发,听说android studio是Google支持的android 应用开发工具,所以想应该肯定比Eclipse好用吧,反正以前没有jav ...
- 增删改查--windows下mysql客户端--表的使用
>>>>>>>>>>>>>>>>>>>> selet 5种子句之where常用运 ...
- android开发:深入理解View(一):从setContentView谈起
我们都知道 MVC,在Android中,这个 V 即指View,那我们今天就来探探View的究竟. 在onCreate方法中,可以调用this.setContentView(layout_id),来设 ...
- 返水bug-霸世
NOOK(N) CSBFB(25) off(Y) QQ(2652880032) G(1) off1(Y) QQ1(3479301404) G1(1) off2(Y) QQ2(309235846) G2 ...