开发者社区> 问答> 正文

JAVA 运行的最小单元是什么?

最近从PHP转到了JAVA。 但是一直迷惑一个问题。就是JAVA 为什么会有连接池这个概念呢?
PHP的运行方式是从脚本开始到脚本结束,脚本结束,对象自动就没了。java是如何运行的呢?java难道是不同线程调用的还是同一个对象,那不就乱了??不同用户来,怎么区别谁是谁的对象?我都搞晕了。现在我都不敢new 对象了。

展开
收起
蛮大人123 2016-02-28 17:29:34 3155 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    java运行方式,自始至终都是main方法为入口,启动一个JVM进程。
    1、如果楼主只是运行一个简单java脚本,跟其他语言一样,都是main方法运行->结束,对象都销毁。
    2、如果是运行一个web,那我用tomcat+servlet的方式来解释和php+cgi的不一样:
    (1)对于一个web程序(用tomcat),java运行开始就是从tomcat启动的jvm,这个时候就是一个进程在运行,所有对象都在这个进程中。
    (2)当一个http请求过来,tomcat有专门一个对象会去接收请求之后会创建一个线程去加载对应的servlet或者jsp页面(它类似php),然后去执行和响应。
    区别就是这里,php通过webserver+cgi是去启动一个进程执行php脚本直到运行结束,那么这次请求是没有任何对象还或者了。
    但是java,由于tomcat一直没有关闭,所以整个进程是一直存活着。你访问一个jsp,如果它有全局变量,那么即便jsp脚本执行完响应结束,全局变量还是会留在tomcat这个启动的这个jvm内存中。
    “java难道是不同线程调用的还是同一个对象,那不就乱了?”
    关于这个疑问。就像我上面提到的那个专门对象是一样的。由它接收到个请求,然后再给每个请求分配一个线程去处理。
    在并发的情况下,这个对象完全可能被多个线程在同时使用。那为什么可以是同一个对象处理,就是线程安全这块了。

    2019-07-17 18:49:51
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载