脸白的白脸 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 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试