|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
还是要自己一点一点写代码,然后编译,改错再编译好那。还有最重要的是.net的编译环境非常好,你甚是不需要了解太多工具,对于简单的系统,你可以之了解一些语法就哦了。
1.join()先容
join()界说在Thread.java中。
join()的感化:让“主线程”守候“子线程”停止以后才干持续运转。这句话大概有点流畅,我们仍是经由过程例子往了解:- //主线程
- publicclassFatherextendsThread{
- publicvoidrun(){
- Sons=newSon();
- s.start();
- s.join();
- ...
- }
- }
- //子线程
- publicclassSonextendsThread{
- publicvoidrun(){
- ...
- }
- }
复制代码 申明:
下面的有两个类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)- publicfinalvoidjoin()throwsInterruptedException{
- join(0);
- }
- publicfinalsynchronizedvoidjoin(longmillis)
- throwsInterruptedException{
- longbase=System.currentTimeMillis();
- longnow=0;
- if(millis<0){
- thrownewIllegalArgumentException("timeoutvalueisnegative");
- }
- if(millis==0){
- while(isAlive()){
- wait(0);
- }
- }else{
- while(isAlive()){
- longdelay=millis-now;
- if(delay<=0){
- break;
- }
- wait(delay);
- now=System.currentTimeMillis()-base;
- }
- }
- }
复制代码 申明:
从代码中,我们能够发明。当millis==0时,会进进while(isAlive())轮回;即只需子线程是活的,主线程就一直的守候。
我们依据下面注释join()感化时的代码来了解join()的用法!
<p>
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。 |
|