Thread和Service应用场合的区别

  Thread和Service的区别:

1)

  • Thread 是程序执行的最小单元,它是分配CPU的基本单位,可以用 Thread 来执行一些异步的操作。
  • 如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的main 线程上。因此 Service不是线程!

2)

  • Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止Thread 或者Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该 Thread 的引用。另一方面,你没有办法在不同的 Activity 中对同一 Thread 进行控制。
  • 而任何 Activity 都可以控制同一 Service,而系统也只会创建一个对应 Service 的实例。因此你可以把 Service 想象成一种消息服务,而你可以在任何有 Context 的地方调用 Context.startService、Context.stopService、Context.bindService,Context.unbindService,来控制它,你也可以在 Service 里注册 BroadcastReceiver,在其他地方通过发送 broadcast 来控制它,当然这些都是 Thread 做不到的。

3) Service组件主要有两个目的:后台运行和跨进程访问。service可以在android系统后台独立运行,线程是不可以。

4) Service类是可以供其他应用程序来调用这个Service的而Thread只是在本类中在使用,如果本类关闭 那么这个thread也就下岗了而Service类则不会.

时间: 2024-09-30 05:43:48

Thread和Service应用场合的区别的相关文章

servlet中的HttpServletRequest,HttpServletResponse对象以及service 和 doXX方法区别

一:HttpServletRequest对象作用是用于获取请求数据. 核心的API: 请求行: request.getMethod(); 请求方式 request.getRequetURI() / request.getRequetURL() 请求资源 request.getProtocol() 请求http协议版本 请求头: request.getHeader("名称") 根据请求头获取请求值 request.getHeaderNames() 获取所有的请求头名称 实体内容: req

Android之Thread与Service

Service还是Thread  Service用来执行长时间的后台任务,同时线程也可以执行后台任务,它们的不同是什么? Service的特点 1.默认情况下,Service是运行在主线程中,如果要执行长时间的耗时工作,应该在Service中再开一个Thread 来执行. 2.Service的优先级高于Activity,也高于Activity所开的Thread,所有在内存不足的情况下,不会轻易杀死Service,就算是杀死了,也会在资源可用的情况下再重启被杀死的Service.实际上,Threa

Thread类中各种状态的区别以及使用

wait()是等待某个object:1.执行object的synchronized方法:2.执行一段synchronized代码,而且是基于object做的同步:3.如果object是class类,可以执行它的synchronized static方法 notify().notifyAll():能够唤醒等待的线程 interrupt():中断一个线程,用得比较少 join().join(long millis):当这个线程调用了join()方法后它才执行后面的线程,保证了线程之间有顺序的执行.如

Web Service和WCF的区别。其实二者不属于一个范畴!!!

Web Service和WCF的区别 [1]Web Service:严格来说是行业标准,也就是Web Service 规范. 它有一套完成的规范体系标准,而且在持续不断的更新完善中. 它使用XML扩展标记语言来表示数据(这个是跨语言和平台的关键).微软的Web服务实现称为ASP.NET Web Service.它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互.WSDL来实现服务接口相关的描述.此外Web services 可以注册到UDDI中心.供其客户查找使用.     

Web Service和WCF的区别

*Web Service和WCF的区别: Web Service是一种行业标准,也就是Web Service规范,既不是框架也不是技术 WCF是一个分布式应用的开发框架,属于特定的技术,或者是平台,既不是标准也不是规范->DCOM协议 分布式组件对象模型 是一系列微软的概念和程序接口,利用这个接口,客户端程序对象能够请求来自网络中另一台计算机上的服务器程序对象. DCOM基于组件对象模型(COM),COM提供了一套允许同一台计算机上的客户端和服务器之间进行通信的接口

Thread.currentThread().getName() 和 this.getName()区别详解

Thread.currentThread().getName() 和 this.getName()区别详解 <<Java多线程编程核心技术>> 这本书里说到了这个:  Thread.currentThread().getName() this.getName() 他俩是有区别的,得到的效应是不一样的,首先,从直观上来说: Thread.currentThread().getName() 是一个静态方法 this.getName()是一个实例方法 实例方法,一般情况下是:反映这个实例

angularjs 中 Factory,Service,Provider 之间的区别

本片文章是使用了 angularjs 中使用 service 在controller 之间 share 对象和数据 的code(http://jsfiddle.net/kn46u0uj/1/) 来进行演示 Factory,Service,Provider 之间的区别 1. Factory factory('dataService',function(){ return { golbal_sitename:"this is the shared value", sayHello:func

Thread 的 sleep() 和 wait() 的区别

Java Thread 的使用 Java Thread 的 run() 与 start() 的区别 Java Thread 的 sleep() 和 wait() 的区别 1. sleep 和 wait 方法解释 sleep()方法是Thread类里面的,主要的意义就是让当前线程停止执行,让出cpu给其他的线程,但是不会释放对象锁资源以及监控的状态,当指定的时间到了之后又会自动恢复运行状态. wait()方法是Object类里面的,主要的意义就是让线程放弃当前的对象的锁,进入等待此对象的等待锁定池

Java基础加强之并发(三)Thread中start()和run()的区别

Thread中start()和run()的区别 start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法.start()不能被重复调用.run()   : run()就和普通的成员方法一样,可以被重复调用.单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程! MyThreadTest.java代码 class MyThread extends Thread{ public void run() { System.out.println("线程名:&qu