- 浏览: 398963 次
文章分类
- 全部博客 (327)
- Android (114)
- Java (13)
- Java基础 (14)
- Glib (2)
- linux (15)
- extjs (5)
- eclipse (2)
- Asterisk (56)
- MYSQL (6)
- 数据库 (9)
- PHP (7)
- C# (18)
- 杂谈~~ (1)
- web开发前端 (3)
- 网络编程 (2)
- Opensips (2)
- voip (3)
- debian (7)
- openfire (15)
- wordpress (1)
- 版本控制 (1)
- Android 线程服务广播 (1)
- SRTP (2)
- 单片机及ARM等 (3)
- 基础知识 (5)
- asp.net (2)
- 单片机 (1)
- 设计模式及架构 (1)
- 安全 (1)
- Cubieboard 草莓树莓各类派 Android开发板 (1)
- J2EE (2)
- BootStrap (3)
- BootStrap web前端开发 (1)
- web前端开发 (4)
- object-c (1)
- openwrt (8)
- 智能家居 (4)
- Node.js (4)
最新评论
-
xiaoxiecomeon:
你这个程序一存在线程的时间片相互抢占的问题,运行时间长了很可能 ...
Runnable 和 Thread -
dotjar:
我觉得话应该这么说:引用TestThread tt = new ...
Runnable 和 Thread -
dagf113225:
调用TelephonyManager的隐藏API是先参考Fra ...
Android提高第十四篇之探秘TelephonyManager
我们都知道创建线程有两个方法: 一是通过继承Thread类;二是向Thread类传递一个Runnable对象. 比如说一个售票站有四个窗口卖票,我们要设计四个线程 第一种方法:传递一个Runnable对象.
public class MyThread
{
public static void main(String[] args)
{
TestThread tt = new TestThread();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
}
}
class TestThread implements Runnable
{
public int ticket = 100;
public void run()
{
while(ticket>0)
{
System.out.println(Thread.currentThread().getName()+"is saling ticket"+ticket--);
}
}
}
二.通过继承Thread类
public class MyThread { public static void main(String[] args) { TestThread tt1 = new TestThread().start(); TestThread tt2= new TestThread().start(); TestThread tt3 = new TestThread().start(); TestThread tt4 = new TestThread().start(); } } class TestThread implements Runnable { public int ticket = 100; public void run() { while(ticket>0) { System.out.println(Thread.currentThread().getName()+"is saling ticket"+ticket--); } } }
结论:
方法一中四个线程是合作卖100张,而方法二中是四个线程分别各卖100张,就是说四个线程都会卖同一张票四次。
也就是说Runnalbe 是多个对象同时跑一个run,Thread是各自跑各自的
评论
2 楼
xiaoxiecomeon
2012-04-26
你这个程序一存在线程的时间片相互抢占的问题,运行时间长了很可能会卖出0、-1、-2这张票。你可以在while输出的后面加一句sleep(1)试一下,会找到问题的。
1 楼
dotjar
2012-04-20
我觉得话应该这么说:
TestThread tt = new TestThread();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
这里只有一个线程实例,所以ticket数据共享;
而
TestThread tt1 = new TestThread().start();
TestThread tt2= new TestThread().start();
TestThread tt3 = new TestThread().start();
TestThread tt4 = new TestThread().start();
各有各自的ticket,各自属于各自的实例,不存在数据共享问题。
这就是说,上边那个是线程间数据共享的例子,有如火车售票。
我也是来总结下,沾沾楼主的光。
楼主万福!
引用
TestThread tt = new TestThread();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
这里只有一个线程实例,所以ticket数据共享;
而
引用
TestThread tt1 = new TestThread().start();
TestThread tt2= new TestThread().start();
TestThread tt3 = new TestThread().start();
TestThread tt4 = new TestThread().start();
各有各自的ticket,各自属于各自的实例,不存在数据共享问题。
这就是说,上边那个是线程间数据共享的例子,有如火车售票。
我也是来总结下,沾沾楼主的光。
楼主万福!
发表评论
-
直接拿来用!最火的Android开源项目整理
2015-09-16 10:13 576一、代码库 1、from 代码家 整理比较好的源 ... -
探讨android更新UI的几种方法
2014-06-09 23:27 592今天讲的内容非常简单,只是讲讲有关于android界面更新的 ... -
Android 滑动切换页面 以及屏幕手势
2014-05-08 17:49 491手机进入智能机时代,触摸屏也已成为主流之势,原来的手机按键也 ... -
android 用Achartengine 作图
2014-05-08 16:55 721Achartengine 是google的一 ... -
Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
2014-05-08 16:28 727Animation的4个基本动画效果 What is An ... -
java.lang.ClassNotFoundException: Didn't find class "android.support.v4.view.Vie
2014-05-06 14:43 2881Android错误:Caused by: java.lang ... -
Android Socket通信如何设置超时时间
2014-05-06 14:14 1028其实关于这个问题可能用到的人不会很多,不过我在这里还是说说。 ... -
【转】Android本地语音识别引擎PocketSphinx-语言建模
2014-02-13 10:35 1773Android本地语音识别引擎PocketSphinx- ... -
关于build.prop原始Dalvik虚拟机设定与调整
2013-09-05 10:40 1236原厂S3 台版 1GB Ramsystem/build.pro ... -
Android中Service与IntentService的使用比较
2013-09-04 15:24 1165该博客来自网络——— ... -
android 应用程序Activity之间数据传递与共享的几种途径
2013-08-01 17:24 8871.基于消息的通信机制 Intent ---boud ... -
android数据通信方式
2013-08-01 17:15 882http://www.itkee.com/develope ... -
“android.intent.category.DEFAULT”的目的是什么?
2013-07-31 16:43 5171、要弄清楚这个问题,首先需要弄明白什么是implicit( ... -
集成拨号盘,2句话的事情
2013-07-30 15:45 582<intent-filter> < ... -
Android TabHost动态加载内容总结
2013-07-25 17:49 934前面用继承TabActivity的方法很好的完成了,TabHo ... -
[Android实例] android json
2013-07-17 15:20 631import java.io.ByteArrayOutput ... -
android json解析及简单例子
2013-07-17 15:19 903JSON的定义: 一种轻量级的数据交换 ... -
AsyncTask的用法-UI刷新发放
2013-07-15 14:50 644在开发Android应用时必须遵守单线程模型的原则: A ... -
java.lang.OutOfMemoryError处理错误
2013-07-15 14:41 640java.lang.OutOfMemoryError异常解决 ... -
关于android.view.WindowLeaked异常的解决方案
2013-07-15 10:34 591Android.view.WindowLeaked按字面了解, ...
相关推荐
Java中Runnable和Thread的区别
Java中Runnable和Thread的区别分析.rar
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。接下来通过本文给大家浅析Java中Runnable和Thread的区别,一起看看吧
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口,下面就拉分别介绍一下这两种方法的优缺点
认识Thread和Runnable 认识Thread的start和run 线程状态说明
java中实现多线程有两种方法:一种是继承Thread类,另一种是实现Runnable接口。
在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。
我相信对初学者这是很有帮助的,了解两中实现多线程的方法的不同这处
thread 线程类 实现runnable接口
RunnableThread1.java
分别用Thread类和Runnable接口实现的阶乘的计算过程及结果的显示(本来一开始设置的不要积分,不知道为啥变得需要积分了,故此调整一下)
Thread和Runnable 的区别在面试当中是比较容易考的,自己又刚好在做这个的实验课题,于是乎,决定好好的学习这一部分知识,并把我查过的资料,通过自己的理解,给大家整理出来。 目录 面向小白学习法——Thread...
1、Java有两种实现多线程的方式:通过Runnable接口、通过Thread直接实现,请掌握这两种实现方式,并编写示例程序。 2、多线程是并发执行的,交替占有cpu执行,请编写示例程序,并观察输出结果。 3、采用线程同步方法...
实现Runnable接口和继承Thread类两种方式实现在屏幕上随机画正方形线程程序
1. 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。 学习线程之间的通信协调关系。 2. 使用 runnable 接口实现按两... 使用继承Thread类方式和实现Runnable接口两种方式实现。
主要介绍了Java中Thread 和Runnable的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
在第二种方法中,由于3个Thread对象共同执行一个Runnable对象中的代码,因此可能会造成线程的不安全,比如可能ticket会输出-1(如果我们Syste
本篇文章是对在Android中Handler Runnable与Thread的区别进行了详细的分析介绍,需要的朋友参考下
本文首先介绍了线程的有关概念,接着介绍了线程的生命期及其状态间的转换,多线程的调度 原则,线程的死锁,详细阐述了多线程的两种实现方法: 由Thread类派生子类;实现Runnable接口