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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
线程各种方法的使用实例.doc

进程是程序的一次动态执行过程,它需要经历从代码加载,代码执行到执行完毕的一个完整过程。进程和线程一样都是实现并发的一个基本单位。线程是在进程的基础上进一步的划分,是比进程更小的执行单位。所谓多线程是指一个进程在执行的过程中可以产生多个更小的程序单元,这些单元被称作线程。这些线程可以同时存在同时运行。 继承Thread类,必须重写run方法,该方法是线程主体,用于指定任务。启动线程要用start()方法(此方法里面有一个native声明的start0方法,表示调用本地操作系统函数。),使线程进入就绪状态,此时线程进入线程队列排队,等待cpu服务,此时具备运行能力。当就绪状态的线程被调用并获得处理器资源时,线程就进入运行状态,此时自动调用该线程的run方法。 Runnable与Thread的关系类似与代理模式。Thread与我们自定义的线程类都实现了runnable接口,Thread类可以接受自定义类的实例对象,thread类并没有完全实现runnable接口中的run方法,它调用的是runnable接口的run方法,也就是runnable子类的run方法。 1.为什么线程在启动时不能直接调用run()方法? 因为线程的运行需要有本机操作系统的支持,Thread类中start()中定义了一个用native方法声明的start0()方法,表示调用本机的操作系统函数。虽然调用的是start()方法但还是执行的是run()方法的主体。 Runnable类中没有定义start()方法,所以不能直接启动多线程。Thread类中定义了两个构造方法用于接受Runnable实例对象,依靠此点启动多线程: Public Thread(Runnable target), Public Thread(Runnable target,String name); Thread类中的run方法调用的是Runnable接口的run()方法(类似与代理模式,方法中有通过构造器接受的Runnable接口的实例,通过实例调用Runnable子类的run方法),所以如果通过继承Thread类实现多线程,则必须覆写run()方法,不然调用的就是Runnable接口子类的方法了。 直接调用run()方法实际上是main线程在执行。Java中所有线程都是同时启动的,那个线程抢到的cpu资源哪个线程就执行。Java运行时至少启动了main线程和垃圾回收线程。 2.实现Runnable接口相对于继承Thread类来说,有如下优势: 适合多个相同程序代码的线程处理同一资源的情况。 可以避免java单继承性带来的局限。 代码能够被多个线程共享,代码与数据是独立的,增强了代码的健壮性。 3.Runnable方式实现线程可以共享资源的原因String toString() 返回该线程的字符串表示形式,包括线程名称、优先级和线程组。 static void yield() 暂停当前正在执行的线程对象,并执行其他线程。 static Thread currentThread() 返回对当前正在执行的线程对象的引用。 String getName() 返回该线程的名称。 boolean isAlive() 测试线程是否处于活动状态。 void join() 强制执行。--等待该线程终止。 void setDaemon(boolean on) 将该线程标记为守护线程或用户线程。 void setName(String name) 改变线程名称,使之与参数 name 相同。 void setPriority(int newPriority) 更改线程的优先级。 void getPriority() 获得线程的优先级。 final void wait()线程等待。 final void notify()唤醒第一个线程。 Final void notifyAll()唤醒所有线程 static void sleep(long millis) 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。 void start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。 void run() 如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。 static int activeCount() 返回当前线程的线程组中活动线程的数目。 void checkAccess() 判定当前运行的线程是否有权修改该线程。 long getId() 返回该线程的标识符。 int getPriority() 返回线程的优先级。

文档评论(0)

docindpp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档