Java线程:线程私有变量
线程对象也是从一个(线程)类而构建的,线程类作为一个类也可以拥有自己的私有成员。这个成员为此线程对象私有,有时候使用线程私有变量,会巧妙避免一些并发安全的问题,提高程序的灵活性和编码的复杂度。
下面举例来说吧,统计一个线程类创建过多少个线程,并为每个线程进行编号。
package com.lavasoft.test;

/**
* 为线程添加编号,并确所创建过线程的数目
*
* @author leizhimin 2010-1-4 14:15:31
*/
public class ThreadVarTest {
        public static void main(String[] args) {
                Thread t1 = new MyThread();
                Thread t2 = new MyThread();
                Thread t3 = new MyThread();
                Thread t4 = new MyThread();
                t1.start();
                t2.start();
                t3.start();
                t4.start();
        }
}

class MyThread extends Thread {
        private static int sn = 0;    //线程数
        private int x = 0;                    //线程编号

MyThread() {
                x = sn++;
        }

@Override
        public void run() {
                Thread t = Thread.currentThread();
                System.out.println(t.getName() + "\t" + x);
        }
}

运行结果:
Thread-0  0
Thread-1  1
Thread-2  2
Thread-3  3

Process finished with exit code 0

这个程序是很多公司面试题,这是一种求解方式,应该是最简单的求解方式。还有用ThreadLocal实现的版本,还有其他的,都没有这个代码简洁。

Java线程:线程私有变量相关推荐

  1. 使用访问器属性模拟java中的私有变量

    2019独角兽企业重金招聘Python工程师标准>>> <script>"use strict";//注意,一定要写严格模式function Emp( ...

  2. java 反射 私有成员_Java对类私有变量的暴力反射技术讲解

    Java对类私有变量的暴力反射 假设有一个类,他有一个私有变量: package com.howlaa.day04; public class ReflectPoint { private int p ...

  3. 在python语言中定义私有成员变量的方法是_Python在类中有“私有”变量吗?

    回答(11) 2 years ago python中的私有变量或多或少是一个hack:解释器故意重命名变量 . class A: def __init__(self): self.__var = 12 ...

  4. Java线程-线程池-条件变量

    条件变量是Java5线程当中很重要的一个概念,顾名思义,条件变量就是条件当中的一种变量,这里的条件没有实际意义,仅仅是个标记而已. 条件变量都实现了java.util.concurrent.locks ...

  5. java 全局变量线程安全_Java线程安全问题指的是全局变量,还是静态变量?

    这个问题的答案是静态变量和全局变量都可能引起线程安全问题.这两种变量引起线程安全问题的原因和区别如下: 1.静态变量 静态变量即静态成员变量.只要有修改变量值的操作,无论是在单例或者非单例都是线程不安 ...

  6. Java高级-线程同步机制实现

    2019独角兽企业重金招聘Python工程师标准>>> 前言 我们可以在计算机上运行各种计算机软件程序.每一个运行的程序可能包括多个独立运行的线程(Thread). 线程(Threa ...

  7. java volatile线程可见_volatile-验证线程之间的可见性

    由于JVM运行程序的实体是线程,而每个线程创建时JVM都会为其创建一个工作内存(有些地方称为栈空间),工作内存是每个线程的私有数据区域,而Java内存 模型中规定所有变量都存储在主内存,主内存是共享内 ...

  8. Java并发——线程安全

    1.线程安全 多个线程对同一个共享变量进行读写操作时可能产生不可预见的结果,这就是线程安全问题. 故线程安全的核心点就是共享变量,只有在共享变量的情况下才会有线程安全问题.这里说的共享变量,是指多个线 ...

  9. java runnable线程锁_多线程 java 同步 、锁 、 synchronized 、 Thread 、 Runnable

    线程 1 线程概述 1.1 什么是线程 v  线程是程序执行的一条路径, 一个进程中可以包含多条线程 v  一个应用程序可以理解成就是一个进程 v  多线程并发执行可以提高程序的效率, 可以同时完成多 ...

最新文章

  1. CVPR 2019 | 旷视研究院提出TACNet,刷新时空动作检测技术新高度
  2. Python基础、条件语句和基本数据类型
  3. leetcode 81 Search in Rotated Sorted Array II ----- java
  4. Linux下C语言使用openssl库进行MD5校验
  5. bin文件怎么转换成文本文档_Python脚本4:根据txt文本,批量创建文件夹
  6. HTML+CSS+JS实现美女canvas仿ps橡皮擦刮刮卡
  7. nginx简介--理解nginx配置/模块/openresty
  8. java 3000并发,还被面试官怼并发编程?来,吃点能量!Java并发编程技术
  9. Python学习总结之一 -- 基础篇
  10. win10没有realtek高清晰音频管理器_【微软】第49期分享:装完Win 10最新补丁数据没了!...
  11. Maven命令安装JAR包到本地仓库
  12. HDU 6319 Problem A. Ascending Rating (单调队列)
  13. 10大协作办公工具:实现团队工作效率最大化
  14. 读研2年,我选择从中科院退学转行写代码
  15. oracle 字符替换
  16. 数据中心网络设备管理(二)
  17. SAP中显示需求事务MD63和MD73的比较分析
  18. mongodb 计算坐标距离
  19. HTML小游戏5 —— 水果忍者(附完整源码)
  20. django 常用 详解

热门文章

  1. 华为p7刷android go,华为首款Android GO手机发布 1G内存也流畅
  2. 计算机仿真技术实际,计算机仿真技术详解.doc
  3. mysql表空间_浅谈mysql中各种表空间(tablespaces)的概念
  4. java提交表单后页面不刷新_表单已经提交,但是点击后退,显示网页过期,刷新后怎样避免重复提交(急!!谢谢!)...
  5. 灯三段调光原理_各种筒灯、射灯、斗胆灯最全的解释?用对地方,效果加倍
  6. Spring mvc @ModelAttribute
  7. flask v0.1 项目工程
  8. python abc
  9. TensorFlow Seq2Seq
  10. C++ vector