精华内容
下载资源
问答
  • 就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问。 什么线程安全: 如果你的代码所在的...

    java中的线程安全是什么:

    就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问。

    什么叫线程安全:

    如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。

    或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。

    线程安全问题都是由全局变量及静态变量引起的。
    若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。

    存在竞争的线程不安全,不存在竞争的线程就是安全的

    展开全文
  • 1.可以这样理解,加锁的就是安全的,不加锁的就是不安全的(感觉比较生动,不知道对不对,望指出... 线程不安全 就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据2.到底是什么意思呢?

    1.可以这样理解,加锁的就是安全的,不加锁的就是不安全的(感觉比较生动,不知道对不对,望指出)

    线程安全 就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。
    线程不安全 就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据

    2.到底是什么意思呢?
    如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
    好比你有两个一模一样的银行卡(账户一样,余额一样,当然现实中是没有的),假如卡上余额1000块,而你跟你女朋友同时在不同的ATM上面取1000块钱(是同时哦,理想中的同时),如果线程不安全,那么俩人都能同时取出1000块(赚死了)。而如果线程安全的话,只能一个人同时操作一个账户,当这个账户正在被操作时,是被锁起来的,不给别人动的,只能你自己动,你动完了别人才能动。

    3.为什么会有线程安全问题?
    线程安全问题都是由全局变量及静态变量引起的。
    若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。
    安全性:
    比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。
    在单线程运行的情况下,如果 Size = 0,添加一个元素后,此元素在位置 0,而且 Size=1;
    而如果是在多线程情况下,比如有两个线程,线程 A 先将元素存放在位置 0。但是此时 CPU 调度线程A暂停,线程 B 得到运行的机会。线程B也向此 ArrayList 添加元素,因为此时 Size 仍然等于 0 (注意哦,我们假设的是添加一个元素是要两个步骤哦,而线程A仅仅完成了步骤1),所以线程B也将元素存放在位置0。然后线程A和线程B都继续运行,都增加 Size 的值。
    那好,我们来看看 ArrayList 的情况,元素实际上只有一个,存放在位置 0,而 Size 却等于 2。这就是“线程不安全”了

    原文链接:http://blog.csdn.net/love_java_cc/article/details/52162366

    展开全文
  • 题目分析:作者正在学习中… ...线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。 参考文章传送门: link. 【题目拓展】 什么是线程,它与进程又有什么关系? 答: ...

    题目分析:作者正在学习中…

    【答案】

    • 线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染
    • 线程不安全就是提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据

    参考文章传送门: link.

    【题目拓展】

    • 什么情况下会造成线程的不安全?
      一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据
    • 什么是线程,它与进程又有什么关系?
      答: link.
    • 什么是脏数据
      答:一个事物读取了另一个事物未提交的数据(常常是并发操作引起的,并发操作所带来了一致性问题包括:丢失的修改,不可重复读,读“脏”数据,幻读)。
    • 关于线程安全的其他结论
      答: ArrayList是非线程安全的,Vector是线程安全的;
      HashMap是非线程安全的,HashTable是线程安全的;
      StringBuilder是非线程安全的,StringBuffer是线程安全的。
    展开全文
  • 1.可以这样理解,加锁的就是安全的,不加锁的就是不安全的(感觉比较生动,不知道对不对,... 线程不安全 就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据2.到底是什么意思呢?如...
    1.可以这样理解,加锁的就是安全的,不加锁的就是不安全的(感觉比较生动,不知道对不对,望指出)
    线程安全  就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。
          线程不安全  就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据
    2.到底是什么意思呢?
    如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
    好比你有两个一模一样的银行卡(账户一样,余额一样,当然现实中是没有的),假如卡上余额1000块,而你跟你女朋友同时在不同的ATM上面取1000块钱(是同时哦,理想中的同时),如果线程不安全,那么俩人都能同时取出1000块(赚死了)。而如果线程安全的话,只能一个人同时操作一个账户,当这个账户正在被操作时,是被锁起来的,不给别人动的,只能你自己动,你动完了别人才能动。
    3.为什么会有线程安全问题?
    线程安全问题都是由全局变量静态变量引起的。
    若每个线程中对全局变量静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。
    安全性:
    比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。
    单线程运行的情况下,如果 Size = 0,添加一个元素后,此元素在位置 0,而且 Size=1;
    而如果是在多线程情况下,比如有两个线程,线程 A 先将元素存放在位置 0。但是此时 CPU 调度线程A暂停,线程 B 得到运行的机会。线程B也向此 ArrayList 添加元素,因为此时 Size 仍然等于 0 (注意哦,我们假设的是添加一个元素是要两个步骤哦,而线程A仅仅完成了步骤1),所以线程B也将元素存放在位置0。然后线程A和线程B都继续运行,都增加 Size 的值。
    那好,我们来看看 ArrayList 的情况,元素实际上只有一个,存放在位置 0,而 Size 却等于 2。这就是“线程不安全”了
    展开全文
  • 就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么线程安全: 如果你的代码所在的...
  • ArrayList为什么线程不安全

    千次阅读 2019-09-06 20:40:41
    提到线程安全我们应该第一时间想到锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用,所以通过加锁我们就可以保证一个线程的安全性,list接口下面有两个...
  • 首先说一下什么线程不安全:线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。...
  • java线程安全什么

    2021-01-20 13:45:27
    就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么线程安全: 如果你的代码所在的...
  • 什么线程安全

    千次阅读 2019-01-06 21:11:21
     就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么线程安全:  如果你的代码所在...
  • 什么线程安全

    2019-10-12 10:06:15
    就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么线程安全: 如果你的代码所在的...
  • *其实看了这个代码,就应该知道为啥不安全了,就是这个size++操作,在多线程的情况下,这个操作, *可能会出现值覆盖,什么意思呢?举个例子,比如size初始值为0,这时候两个线程执行size++操作, *在内存中这...
  • 然而,一旦把代码放到多线程的环境下去接受蹂躏,结果常常是惨不忍睹的。 《Java并发编程实践》中,给出了线程安全性的解释: A class is thread-...多写几个线程不安全的代码你就明白了。 消失的请求数 假设...
  • 线程安全

    2018-01-01 14:30:43
    前言经常听一个词听多了心里就难受,不知道是啥意思就更难受,最近在学ssh框架,经常看到什么线程安全线程不安全啦,感觉挺好玩的就总结了一下。
  • 就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问什么线程安全:如果你的代码所在的进程...
  • java线程安全

    2019-09-25 13:07:07
    java中的线程安全什么:就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问什么线程安全...
  • java 线程安全

    2017-04-13 20:16:33
    就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么线程安全:如果你的代码所在的...
  • 类变量:static关键字修饰的变量,为什么叫类变量,意思就是他是属于这个类的,可以用类名.变量名这样用,而不是这个类的对象的变量,当让这个类的对象也是可以调用的,类变量是用类名.变量名直接用的,而无须实例化...
  • 线程安全可变性

    2016-09-02 17:06:27
    什么意思呢?就是说一个对象是可变的,那么对这个对象的操作就一定是线程安全的嘛?答案是否定的。举个栗子看看。 1、创建一个可变对象 package Immutable; /** * Created by carrot on 16/9/2. */ public ...
  • 线程安全问题

    2020-03-06 17:11:37
    本文从操作系统谈起,结合原子性,可见性...3.4 理解线程不安全 3.5 保证线程安全的思路 OS(Operating System,简称OS) 一:概念 OS是Operating System的缩写,中文翻译就是操作系统,意思就是计算机管理控制程序,...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 201
精华内容 80
关键字:

线程不安全什么意思