下载此文档

线程各种方法的使用实例.doc


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
进程是程序的一次动态执行过程, 它需要经历从代码加载, 代码执行到执行完毕的一个完整过程。进程和线程一样都是实现并发的一个基本单位。线程是在进程的基础上进一步的划分, 是比进程更小的执行单位。所谓多线程是指一个进程在执行的过程中可以产生多个更小的程序单元,这些单元被称作线程。这些线程可以同时存在同时运行。继承 Thread 类, 必须重写 run 方法, 该方法是线程主体, 用于指定任务。启动线程要用 start() 方法(此方法里面有一个 native 声明的 start0 方法,表示调用本地操作系统函数。), 使线程进入就绪状态,此时线程进入线程队列排队,等待 cpu 服务,此时具备运行能力。当就绪状态的线程被调用并获得处理器资源时, 线程就进入运行状态, 此时自动调用该线程的 run 方法。 Runnable 与 Thread 的关系类似与代理模式。 T hread 与我们自定义的线程类都实现了 runnable 接口, Thread 类可以接受自定义类的实例对象, thread 类并没有完全实现 runnabl e 接口中的 run 方法, 它调用的是 runnable 接口的 run 方法, 也就是 runnable 子类的 run 方法。 1. 为什么线程在启动时不能直接调用 run() 方法? 因为线程的运行需要有本机操作系统的支持, Thread 类中 start() 中定义了一个用 nativ e 方法声明的 start0 ()方法,表示调用本机的操作系统函数。虽然调用的是 start() 方法但还是执行的是 run() 方法的主体。 Runnable 类中没有定义 start() 方法,所以不能直接启动多线程。 Thread 类中定义了两个构造方法用于接受 Runnable 实例对象,依靠此点启动多线程: P ublic Thread(Runnable target), P ublic Thread(Runnable target,String name); Thread 类中的 run 方法调用的是 Runnable 接口的 run() 方法( 类似与代理模式, 方法中有通过构造器接受的 Runnable 接口的实例, 通过实例调用 Runnable 子类的 run 方法), 所以如果通过继承 Thread 类实现多线程, 则必须覆写 run() 方法, 不然调用的就是 Runnable 接口子类的方法了。直接调用 run() 方法实际上是 main 线程在执行。J ava 中所有线程都是同时启动的, 那个线程抢到的 cpu 资源哪个线程就执行。J ava 运行时至少启动了 main 线程和垃圾回收线程。 Runnable 接口相对于继承 Thread 类来说,有如下优势: 1. 适合多个相同程序代码的线程处理同一资源的情况。 2. 可以避免 java 单继承性带来的局限。 3. 代码能够被多个线程共享,代码与数据是独立的,增强了代码的健壮性。 3. Runnable 方式实现线程可以共享资源的原因因为一个线程只能启动一次,通过 Thread 实现线程时,线程和线程所要执行的任务是捆绑在一起的。也就使得一个任务只能启动一个线程,不同的线程执行的任务是不相同的, 所以没有必要,也不能让两个线程共享彼此任务中的资源。一个任

线程各种方法的使用实例 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xxj16588
  • 文件大小0 KB
  • 时间2016-06-29
最近更新