脸白的白脸 2017-03-22 04:25 采纳率: 0%
浏览 3193

是否java的程序调用必须要使用线程才会异步执行?

我对程序执行有一些概念认知不清,想请教基础好的同学一些问题。
以下是我的认知:
1、方法内执行多个类的方法,应该是必须等前一个方法执行完了(有执行结果了)之后才会之后后面的代码。这个可以称之为同步的代码执行。
2、当启动新的线程时,程序不需要等到新的线程里的代码执行完之后,才会继续执行主线程。而是启动完新的线程之后继续执行主线程后面的代码。
以下是我的问题:
1、对于普通的方法(代码就是本地执行,类似new 、syso这样的代码),我觉得没问题。但假如方法里是执行mybatis(或者其它我不了解的第三方调用)的程序,
如:

syncOborMDMMapper.updateHospital();
syncOborMDMMapper.updateProduct();
syncOborMDMMapper.updateProductLine();

而这些方法执行的是存储过程:

{call sync_hospital}

我不知道这种情况,是否也是同步的呢,必须等到updateHospital这个存储过程执行完了之后才会之后后面的存储过程呢?
2、其实这个问题我可以本地去测试,通过log日志去认知,但其实我想了解的是,是否在java里,我只要不是启动新的线程,方法调用本身必须等到这个方法执行完了之后才会执行它所在的块级区域后面的代码?这套机制不会受方法具体是做什么的。
3、也就是说,以后只要我看到代码没有显示的启动线程,则必然是同步的,无需多考虑其它情况

  • 写回答

2条回答

  • threenewbee 2017-03-22 04:29
    关注

    这个不一定,单线程也可以异步。典型的使用定时器。

    评论

报告相同问题?

悬赏问题

  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B