`
benx
  • 浏览: 276227 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

线程理解

    博客分类:
  • java
阅读更多
public class Type {

    private String name; //实例变量

    private static String age; //类变量

    public void method() {

        String str = "xiongjin";// 本地变量

    }

}


实例变量:每个对象都有自己的实例变量,且不能访问其他对象的实例变量

类变量:每个类的对象都可以访问的变量

本地变量:只在该变量的方法或快中有效



在多线程中,类变量、实例变量存放在主内存中,本地变量放在堆栈中;

若如果多个Thread拥有同一个实例变量,比如ThreadA和ThreadB同時擁有ClassA的對象IntanceA,ClassA中有实例变量money值为100,这时money在主内存中,ThradA和ThradB的缓存中各有money的副本,现在ThradA先修改money的值为+100,在修改的过程中(ThreadA还没有把money同步进主内存)ThreadB(此时主内存中的money值为100)也对money+100,结果是ThreadA和ThreadB各对money+100,但是实际上是只+100了一次,要解决此问题就必须实行同步





Java的内存模型JMM(Java Memory Model)JMM主要是为了规定了线程和内存之间的一些关系。根据JMM的设计,系统存在一个主内存(Main Memory),Java中所有实例变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory),工作内存由缓存和堆栈两部分组成,缓存中保存的是主存中变量的拷贝,缓存可能并不总和主存同步,也就是缓存中变量的修改可能没有立刻写到主存中;堆栈中保存的是线程的局部变量,线程之间无法相互直接访问堆栈中的变量
分享到:
评论

相关推荐

    IOS多线程理解

    iOS多线程是移动应用开发中不可或缺的技术,它允许程序在后台执行耗时任务,同时保持主线程的流畅,从而提供良好的用户体验。本文将深入探讨iOS的三种主要多线程编程方式:NSThread、NSOperation和NSOperationQueue...

    java线程理解小程序

    这就是"java线程理解小程序"的初衷,帮助开发者学习如何在Android环境中正确地管理和使用线程。 首先,我们需要理解Java中的线程创建方式。最基础的是通过实现`Runnable`接口或继承`Thread`类来创建线程。实现`...

    线程的理解,看完就明白了

    ### 线程的理解,看完就明白了 在计算机科学领域,**线程**是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程(Process)至少有一个线程,如果一个进程中只有一个线程...

    C#多线程操作技术

    理解线程的概念 理解.NET中线程的属性和方法 创建和使用线程 理解线程的特点、优点及使用场合 在.NET程序设计中,线程是使用Thread类(或Timer类(线程计数器)、ThreadPool类(线程池))来处理的,这些类在System....

    vc下创建子线程例子

    以下是对VC下创建子线程例子的深入解析,旨在帮助初学者克服对线程理解的难点。 ### 线程基本概念 在计算机科学中,线程是程序执行流的最小单元,一个标准的程序由多个线程组成。线程允许程序在同一时间处理多个...

    进程与线程的生动形象理解

    ### 进程与线程的生动形象理解 #### 一、引言 进程与线程作为操作系统中的核心概念,对于理解和开发高效的软件至关重要。本文旨在通过一个生动的类比来帮助读者更好地理解进程与线程的基本概念及其差异,并进一步...

    C#语言多线程初步理解

    本教程将帮助初学者理解C#中的多线程概念,并通过一个Windows Forms应用程序实例,演示如何在WinForm控件中启动、暂停、继续子线程以及输出数据。 首先,我们来看多线程的基本概念。在单线程程序中,所有的任务按...

    多线程最完整的思维导图

    此外,线程的状态转换也是多线程理解的重要部分。从新建到运行,再到阻塞、等待、终止,线程经历了多个状态,了解这些状态有助于调试和优化多线程程序。 最后,线程安全的集合类是多线程编程中必不可少的工具。例如...

    关于线程的小程序

    本文将深入探讨“关于线程的小程序”所涵盖的知识点,旨在为初学者提供一个全面的线程理解和实践基础。 一、线程的概念 线程是操作系统分配CPU时间片的基本单位,它在进程中执行,每个进程可以有多个线程。线程之间...

    多线程thread线程的理解

    在学习多线程时,我们需要理解以下几个核心概念: 1. **线程的创建**:程序可以通过创建`Thread`对象并调用其`start()`方法来启动一个新线程。在Java中,还可以通过实现`Runnable`接口或继承`Thread`类来创建线程。...

    理解多线程,写一个多线程应用程序,要求能在用户级实现线程的调度,如启动、挂起、恢复、停止,的C thread、java thread实现。

    总结起来,无论是C语言还是Java,实现多线程都需要理解线程的创建、调度、同步和通信。通过合理利用线程,开发者可以编写出更高效、响应更快的应用程序,充分利用现代计算机的多核优势。在实际开发中,应根据需求...

    Swing线程的深入理解和SwingWorker基础知识介绍

    Swing线程的深入理解和SwingWorker基础知识介绍 Swing线程是Java程序设计中的一种重要概念,用于处理图形用户界面(GUI)中的线程问题。在本文中,我们将深入探讨Swing线程的理解和SwingWorker基础知识,并通过实例...

    MFC多线程 工作者线程 用户界面线程

    在Windows编程领域,MFC(Microsoft Foundation Classes)是微软提供的一套C++库,用于简化Windows应用程序的...开发者需要理解线程间通信、线程安全和调试技巧,才能充分发挥多线程的优势,创建出健壮的MFC应用程序。

    易语言多线程许可证的理解使用

    在易语言中,理解和使用多线程许可证可以帮助开发者更好地管理这些线程,防止因资源竞争导致的问题,如数据不一致性和死锁。 许可证系统是多线程编程中的一个工具,用于限制同时访问特定资源的线程数量。在易语言中...

    多线程之间的线程通信

    例如,在服务器-客户端模型中,通过套接字进行通信,线程可以在同一进程中模拟网络通信,从而更好地理解线程通信的问题。 5. **消息队列(Message Queue)**:线程可以通过发送和接收消息来进行通信,消息队列负责...

    单线程与多线程的区别

    理解这两种模型是编程尤其是服务器端开发的基础,尤其是在Java、C#等支持多线程的编程语言中。 首先,让我们来详细探讨一下**单线程**的概念。在单线程环境中,程序的执行是由一个单一的执行线程控制的,这意味着...

    多线程列子多线程列子多线程列子

    在IT领域,多线程是程序设计中的一个重要概念,尤其在现代计算机系统中,它能够充分利用多核处理器的计算能力,提高程序的执行效率。...理解并掌握多线程编程,能帮助开发者编写出更高效、稳定的软件系统。

Global site tag (gtag.js) - Google Analytics