java同时执行同一个方法吗_java 返回结果的同时执行另一个方法

本文通过一个具体的Java示例代码展示了如何通过启动新线程并利用休眠机制来控制方法调用的顺序。重点说明了在方法a()执行完毕前,JVM不会继续执行后续代码。

照 JPer 的指点,改写了代码 如下,旨在说明 " 如果调用方法 a() 的过程还没有结束,JAVA虚拟机 JVM绝不会去解释并执行下一行,即绝不会去创建JSONObject 对象 jsonObject, 接着返回这个对象,以结束(完成)方法 cs() 调用"。

简单定义了  OSCHINA 类 来替代  JSONObject 类。它有一个属性 name。 一旦调用它的有参构造方法,这个字符串参数值,就将赋予属性 name。

执行方法 cs()的最后两行代码 所返回的 结果, 是一个 name 是”开源中国”的 OSCHINA类的对象。

a() 方法的执行代码包括两步:

a.     首先,  创建一个 线程A_Thread 类的对象 a_thread,并启动这个线程。

b.     这个线程每半秒输出一次信息:"执行方法 a() 被调用的线程正在运行。"

c.     创建并启动线程后 休眠 2 秒钟,才结束方法 a() 的调用。这期间线程会不时发出信息。

class OSCHINA { //用来替代 JSONObject 的类定义

String name; //字符串属性

public OSCHINA(String s){//构造方法

name=s;

System.out.println("OSCHINA 类的构造方法被调用.");

}

}

public class A{

public void a() {//起始方法 a的定义

new Thread(new Runnable(){ //创建一个线程

@Override

public void run(){

while(true) {

try{

Thread.sleep(500);//每半秒输出一次信息

}catch(InterruptedException e){};

System.out.println("执行方法 a() 被调用的线程正在运行。");

}

}

}).start();

try{

Thread.sleep(2000);//休眠2秒后才结束a 的调用

} catch(InterruptedException e) {};

System.out.println("执行 a 结束。");

}//方法 a 的定义 完成

private OSCHINA cs() {

System.out.println("调用 cs(), 开始处理...");

a();

OSCHINA o= new OSCHINA("开源中国");

return o;

}

public static void main(String args[]){

A t= new A();

System.out.println((t.cs()).name);

}

}

输出表明,只有调用方法 a() 的任务完成之后,才得以执行下面的代码 ( 调用 OSCHINA的构造方法, 创建  对象,然后返回这个对象以结束 cs() 的调用) 。就是说:跳过方法 a() 的执行时间,直接返回结果" 是不可能的(错误的)。

调用 cs(), 开始处理...

执行方法 a() 被调用的线程正在运行。

执行方法 a() 被调用的线程正在运行。

执行方法 a() 被调用的线程正在运行。

执行 a 结束。

OSCHINA 类的构造方法被调用.

开源中国

执行方法 a() 被调用的线程正在运行。

执行方法 a() 被调用的线程正在运行。

执行方法 a() 被调用的线程正在运行。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值