仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 506|回复: 8
打印 上一主题 下一主题

[学习教程] 来看Java多线程:“基本篇”08之join()

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:00:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
还是要自己一点一点写代码,然后编译,改错再编译好那。还有最重要的是.net的编译环境非常好,你甚是不需要了解太多工具,对于简单的系统,你可以之了解一些语法就哦了。
1.join()先容
join()界说在Thread.java中。
join()的感化:让“主线程”守候“子线程”停止以后才干持续运转。这句话大概有点流畅,我们仍是经由过程例子往了解:
  1. //主线程
  2. publicclassFatherextendsThread{
  3. publicvoidrun(){
  4. Sons=newSon();
  5. s.start();
  6. s.join();
  7. ...
  8. }
  9. }
  10. //子线程
  11. publicclassSonextendsThread{
  12. publicvoidrun(){
  13. ...
  14. }
  15. }
复制代码
申明:
下面的有两个类Father(主线程类)和Son(子线程类)。由于Son是在Father中创立并启动的,以是,Father是主线程类,Son是子线程类。
在Father主线程中,经由过程newSon()新建“子线程s”。接着经由过程s.start()启动“子线程s”,而且挪用s.join()。在挪用s.join()以后,Father主线程会一向守候,直到“子线程s”运转终了;在“子线程s”运转终了之后,Father主线程才干接着运转。这也就是我们所说的“join()的感化,是让主线程会守候子线程停止以后才干持续运转”!
2.join()源码剖析(基于JDK1.7.0_40)
  1. publicfinalvoidjoin()throwsInterruptedException{
  2. join(0);
  3. }
  4. publicfinalsynchronizedvoidjoin(longmillis)
  5. throwsInterruptedException{
  6. longbase=System.currentTimeMillis();
  7. longnow=0;
  8. if(millis<0){
  9. thrownewIllegalArgumentException("timeoutvalueisnegative");
  10. }
  11. if(millis==0){
  12. while(isAlive()){
  13. wait(0);
  14. }
  15. }else{
  16. while(isAlive()){
  17. longdelay=millis-now;
  18. if(delay<=0){
  19. break;
  20. }
  21. wait(delay);
  22. now=System.currentTimeMillis()-base;
  23. }
  24. }
  25. }
复制代码
申明:
从代码中,我们能够发明。当millis==0时,会进进while(isAlive())轮回;即只需子线程是活的,主线程就一直的守候。
我们依据下面注释join()感化时的代码来了解join()的用法!
<p>
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。
因胸联盟 该用户已被删除
沙发
发表于 2015-1-20 12:40:29 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-20 12:40:29 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
不帅 该用户已被删除
地板
发表于 2015-1-21 08:37:37 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
透明 该用户已被删除
5#
发表于 2015-1-30 12:39:15 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
灵魂腐蚀 该用户已被删除
6#
发表于 2015-2-6 11:51:52 | 只看该作者
是一种使用者不需花费很多时间学习的语言
简单生活 该用户已被删除
7#
发表于 2015-2-16 02:49:36 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
愤怒的大鸟 该用户已被删除
8#
发表于 2015-3-11 21:18:27 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
再见西城 该用户已被删除
9#
 楼主| 发表于 2015-3-28 05:07:15 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表