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. ...
随机推荐
-
Jquery更改table中的内容(一)
css部分: .tab{ border:solid 1px #00aaee; text-align: left; margin:20px;}.tab tr{ border-top: solid 1px ...
-
Install PIL on mac osX10.9
follow this instruction: http://blog.csdn.net/liushuaikobe/article/details/8729652 and if you encoun ...
-
Intellij IDEA连接Git@OSC
错误提示:fatal: remote origin already exists. 解决办法:$ git remote rm origin http://my.oschina.net/lujianin ...
-
ajax例子:审核验证用户名;登录界面
审核验证用户名主页面: <body><div>用户名:<input type="text" id="uid" /><s ...
-
android 开源项目一览
直接拿来用!最火的Android开源项目(一) http://www.csdn.net/article/2013-05-03/2815127-Android-open-source-projects ...
-
JS实现轻量级计算器
想尝试做一个网页版计算器后,参考了很多博客大神的代码,综合归纳.总结修改,整理如下文. 附: Demo 源码 一.HTML+CSS 具体结构样式如下图,基本参照手机计算器界面.按钮功能可以查 ...
-
使用mpvue开发小程序教程(五)
在上一章节中,我们了解了组件的三个基本特性以及组件的基本使用方法.在实际的小程序开发中,我们应该以组件的思维去设计每个小程序的功能页面,对其进行合理的组件拆分,让每个部分都保持功能简洁.条理清楚.各司 ...
-
DK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME
根据提示,我们可以新建一个项目或者以前自己使用过没问题的工程,从中把local.properties文件copy到我们从github中想要导入的工程中,我自己就是这样的,然后这个问题就解决了. ndk ...
-
LeetCode初级算法的Python实现--排序和搜索、设计问题、数学及其他
LeetCode初级算法的Python实现--排序和搜索.设计问题.数学及其他 1.排序和搜索 class Solution(object): # 合并两个有序数组 def merge(self, n ...
-
(转)java反编译i++和++i问题
转自:http://blog.csdn.net/junsure2012/article/details/7099222 java字节码指令集:http://www.jb51.net/article/3 ...