0 0

java 栈和线程的疑惑0

有个疑问,想咨询一下大家:

java每个方法都是在内存中新开辟一个方法栈,所以局部变量在两次调用时,都不会共享, 那synchronized的目的是干什么呢,主要就是为了避免成员变量在两次调用不同方法的时候不会有数据不一致的问题嘛?

求详解



问题补充:在调用每个方法的时候,都是不同的栈,那用多线程还有什么用呢?

多线程、方法栈,同步,这几者有何联系??

求详解
 
2012年5月30日 16:43

5个答案 按时间排序 按投票排序

0 0

synchronized可以用来锁对象和方法,当它锁方法的时候你可以理解它锁的是this(当前对象)。由于对象是存放在堆中所以当另一个线程访问这个方法的时候发现对象已经被锁了,只能等待锁释放。你只注意到了栈而不清楚堆

2012年6月02日 17:03
0 0

多线程是并发进行的。
synchronized(同步对象){
//需要同步的代码
}
但是一般都把当前对象this作为同步对象。
当多个线程共享一个资源的时候需要进行同步,但是过多的同步可能导致死锁。

网上有很多,搜索后对比一下。

2012年6月01日 10:58
0 0

引用
所以局部变量在两次调用时,都不会共享

你自己也说了是局部变量啊 定义在各自方法里的局部变量当然不能共享,但是这个类本身的变量还有一个栈啊,这些变量可是线程共享的。。。。

在调用每个方法的时候,都是不同的栈,那用多线程还有什么用呢? 

多线程就可以访问这个类的变量了啊

你找本基础的书看看就知道了

2012年5月30日 18:00
0 0


synchronized的作用是,每次只有一个线程访问synchronized中的代码,其他的等待,

主要是避免公共属性的不一致,

2012年5月30日 16:51
0 0

线程是有独立的栈的,不过还是有共享变量的啊

比如

class Test{
  private int aaa;

  public void test() {
    int bbb;
  }

}


这个类里 bbb是在方法栈里,但是aaa就是所有共享的了啊

2012年5月30日 16:49

相关推荐

    最新版的Java-解惑

    《Java解惑》是一本专为Java初学者和进阶者设计的指南,旨在帮助读者解决在学习和...以上知识点只是《Java解惑》中的一部分,通过深入学习和实践,你可以逐步解开Java编程中的种种疑惑,成为一名更优秀的Java开发者。

    java解惑java解惑java解惑

    在Java的世界里,疑惑可能涵盖语法、类库、框架、并发、内存管理等多个方面。下面,我们将深入探讨一些常见的Java解惑知识点。 1. **Java基础** - **变量与数据类型**:Java支持基本数据类型(如int、double等)和...

    Java语言程序设计进阶篇答案与代码

    1. **多线程**:Java提供了丰富的多线程支持,包括Thread类、Runnable接口,以及ExecutorService和Future接口等。通过深入理解并发编程,可以构建高效的多任务系统。 2. **集合框架**:Java集合框架包括List、Set、...

    疯狂java课后答案及代码

    这份资料旨在帮助Java初学者深化理解,巩固课堂所学,解决课后练习中的疑惑,同时也适合有一定基础的开发者进行自我提升。 在学习Java的过程中,理论知识和实践操作是相辅相成的。"疯狂Java"系列教程以其深入浅出、...

    Java常见问题集锦 java_faq.rar

    6. **多线程**:线程的创建、同步、通信,以及死锁、活锁的概念和避免策略。 7. **反射机制**:如何在运行时获取类的信息,动态创建对象,调用方法等。 8. **JVM内存管理**:理解堆、栈、方法区,垃圾收集的工作原理...

    java学习相关资源

    3. **《Java解惑.pdf》**:这可能是一本专门解决Java编程中常见问题和疑惑的书籍,涵盖了异常处理、内存管理、线程同步、垃圾回收等高级主题,对提高编程技巧和解决问题的能力有很大帮助。 4. **《Java讲义》**:这...

    JAVA解惑.大全和问题解析

    它涵盖了Java的基础知识、常见疑惑点以及易错知识点,旨在帮助Java初学者和进阶者解决实际编程中的困扰。 1. **基础概念解析**: - 类与对象:Java是一种面向对象的语言,理解类的定义、对象的创建及其生命周期至...

    java 编程帮手

    - Java虚拟机(JVM)是执行Java字节码的引擎,负责垃圾回收、内存管理和线程调度。 - 堆内存与栈内存:堆内存用于存储对象实例,而栈内存则存储方法调用时的局部变量和方法返回地址。 3. **Java集合框架** - ...

    java笔试题大集合及答案

    这份"java笔试题大集合及答案"资料可以帮助你系统地复习和巩固Java知识,解答过程中遇到的疑惑可以通过查阅相关书籍或在线资源来解决,进一步加深理解。同时,不断练习和实战是提升编程能力的关键,尝试自己动手实现...

    java解惑(转)

    6. **JVM(Java虚拟机)**:Java程序运行在JVM上,理解JVM的工作原理,包括类加载机制、内存管理(堆、栈、方法区等)、垃圾回收等,有助于优化程序性能和避免内存泄漏。 7. **源码分析**:标题提到的“源码”可能...

    java程序设计基础+进阶答案单双都有

    本资源包含了基础篇和进阶篇的课后答案,对于初学者来说,是检验学习成果、解决疑惑的好帮手。不论是奇数题还是偶数题,答案的完整性都为自我测试提供了便利。 首先,基础篇通常会涵盖以下知识点: 1. **Java环境...

    JAVA基础讲解.zip

    10. **JVM与内存管理**:理解Java虚拟机的工作原理,包括内存区域(堆、栈、方法区等)和垃圾回收机制,有助于写出更高效、无内存泄漏的代码。 这个"JAVA基础讲解"资源包中,很可能包含了这些知识点的详细讲解,...

    study1010_bursttpf_java学习_源码.zip

    通过阅读和分析源码,开发者可以深入理解类、对象、方法、接口等概念,学习如何组织代码结构,以及如何利用Java库和框架来解决问题。 【可能包含的Java知识点】 1. **基本语法**:包括变量声明、数据类型、运算符...

    最新scjp310-065题库

    SCJP(Sun Certified Programmer for the Java 2 Platform, Standard Edition 6)是...为了顺利通过SCJP认证,除了做题库外,还应阅读官方文档,参考权威教材,以及参加在线讨论和解答疑惑,全面提升Java编程技能。

    (基于android的毕业设计)宠物管理App(源码+说明)

    2. **宠物论坛**:这是一个社区交流平台,允许用户分享养宠经验、提问和解答疑惑。论坛的设计可能涉及到用户登录、发帖、回帖、点赞等交互功能,需要利用Android的SQLite数据库存储用户信息和帖子内容。 3. **宠物...

    求职与招聘.zip

    - **简历编写**:突出项目经验、技术栈和成果,清晰明了地展示个人技能。 - **面试准备**:常见面试题涵盖基础概念、算法、源码分析等,需要扎实的理论知识和实际操作能力。 - **技术评估**:可能会有编程测试或...

    福建专升本计算机复习资料合集

    7. **操作系统**:操作系统的工作原理,如进程管理、内存管理、文件系统、设备管理,以及多线程和并发编程的概念。 8. **离散数学**:作为计算机科学的基础,离散数学包括逻辑、集合论、图论、组合数学等内容,对...

    你好,我的第一天的csdn

    【标题】:“你好,我的第一天的csdn” 【描述】:“你好,我的第一天的csdn” 这个描述似乎是在表达一个新手...在CSDN平台上,用户可以找到大量相关的教程、博客文章和讨论,与其他开发者互动,解答疑惑,共同成长。

Global site tag (gtag.js) - Google Analytics