最近在学习多线程,刚入门,好多东西不懂,下面这段代码今天想了半天也没明白,希望看到的兄弟姐妹能解释下。

public class NotThreadSafeCounter extends Thread {private static int counter = 0;public void run() {System.out.println("counter:" + getCount());}public static int getCount() {try {Thread.sleep(1500);} catch (Exception e) {e.printStackTrace();}return counter++;}public static void main(String[] args) {for (int i = 0; i < 5; i++) {new NotThreadSafeCounter().start();}}}

View Code

下面是输出结果(当然了,输出结果不确定)

counter:1
counter:0
counter:2
counter:3
counter:4

不明白的地方是为什么0至4全部输出,这种情况下有没有可能五个thread中的某几个读到了相同的值。如果去掉static,就会出现0-4不全输出的结果,希望帮忙解释下。

转载于:https://www.cnblogs.com/RobertC/p/3601225.html

多线程中,static函数与非static函数的区别?相关推荐

  1. C++类中const函数与非const函数的调用规则

    class EX{public:void constFunction() const; }; 如上所示,通过将类成员函数声明为const,以表示这个函数不可以修改类中的成员变量. 建议将不可以修改数据 ...

  2. 类中const函数及非const函数的调用规则

    转自:点击打开链接 类中const函数及非const函数的调用规则 class Student { public:int getAge(){return m_age;}int getAge() con ...

  3. static方法与非static方法是否可以互相调用

    情况一.static方法调用非static方法 非静态方法只有实例对象才可调用,而静态方法随着类的加载而加载,类的加载在实例对象产生之前,所以静态方法不能调用非静态方法 情况二.非atic方法调用st ...

  4. C++ 实现把非静态成员函数作为回调函数(非static)

    众所周知,C++的类成员函数不能像普通函数那样用于回调,因为每个成员函数都需要有一个对象实例去调用它. 通常情况下,要实现成员函数作为回调函数,一种常用的方法就是把该成员函数设计为静态成员函数,但这样 ...

  5. C++中静态成员函数和非静态成员函数的区别

    它们的根本区别在于静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this. 例如: 1 class Sc 2 { 3 public: 4 void nsfn(int a); / ...

  6. 静态成员函数和非静态成员函数的区别?

    一个静态成员函数不与任何对象相联系,故不能对非静态成员进行默认访问. 它们的根本区别在于静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this. 例如: 1 class Sc ...

  7. c++ 静态成员函数和非静态成员函数的区别?

    说明:一个静态成员函数不与任何对象相联系,故不能对非静态成员进行默认访问. 它们的根本区别在于静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this. 例子: class Sc ...

  8. 阻塞函数和非阻塞函数的区别

    简单理解: 阻塞函数就是:程序一直停在此函数处,等待后续操作,有相关操作之后程序才能继续执行,而非阻塞函数是:程序运行在此不会中断,继续向下执行,当此处有操作时,继续此条件的后续操作 如c++中: k ...

  9. 纯函数和非纯函数区别

    1.纯函数 function sum(a,b){ return a + b } 传入值相同时,总会返回相同的结果 2.非纯函数 function sum(a,b){ a = a + b return  ...

  10. 无法从 static 上下文引用非 static 方法

    作为JAVA初学者总会碰到许多问题,今天这个问题比较基础,但是对于只看了一些书的我来说还是比较困难,通过搜索大致了解到: 1.用static修饰的方法称为静态方法,修饰变量则为静态变量,又分别叫做类方 ...

最新文章

  1. JavaScript中使用字符串调用函数
  2. 程序员面试题精选100题(39)-颠倒栈[数据结构]
  3. mysql中的sql_mysql中的sql语句
  4. SQL Server事务回滚对自增键的影响
  5. 【STM32】DAC程序示例
  6. hadoop--MapReduce_WordCount词频统计案例
  7. 程序员的自我修养——读《软技能-代码之外的生存指南》笔记
  8. Python模块和包:导入制作模块、name、模块定位顺序(文件名与模块名重复、功能名与功能名重复、函数名与功能名重复、变量名与模块名重复)、from 模块名 import *__all__列表、包
  9. SQLServer分页查询
  10. Filecoin官方提案FIP0013 添加批量提交ProveCommitSector以减少拥塞
  11. 集合的所有分割方式---2013年1月28日
  12. Google七项不得不知的搜索技巧
  13. Appium API文档中文版
  14. 软件设计师历年真题(2016-2021)
  15. 适合有基础的Java实战项目——坦克大战 练手实战项目
  16. 三维地图可视化应用教程
  17. Ubuntu20.04上安装Gnuradio3.8并且实现Pluto的配置
  18. Golang 标准库 tips之waitgroup详解
  19. Matlab中clc;clear;clear all;clf;close;close all作用
  20. 【JavaEE基础与高级 第42章】C3P0连接数据库操作顺序

热门文章

  1. vue 第十天 (组件的基本使用)
  2. WPS如何并排放置两张图片_Animate如何制作文字动图动画
  3. 线程池ThreadPoolExecutor使用
  4. 【渝粤教育】国家开放大学2018年春季 0690-21T化工原理及实验 参考试题
  5. [渝粤教育] 中国地质大学 电路理论(新) 复习题
  6. [渝粤教育] 西南科技大学 土木工程施工 在线考试复习资料(2)
  7. flask的跨域问题
  8. SharePoint Designer 2010中的外部内容类型-SQL Server
  9. Java笔记 —— 继承
  10. Selenium WebDriver-通过键盘事件操作浏览器