实例变量非线程安全: 如果多个线程共同访问1个对象中的实例变量,则可能出现“非线程安全”问题. public class UnSafeHasSelfPrivateNum { private int num = 0; public void addI(String username) { try { if (username.equals("a")){ num = 100; System.out.println("a set over!"); Thread.sleep…
实例变量与线程安全: 不共享数据: public class NoSharedThread extends Thread { private int count = 5; public NoSharedThread(String name){ super(); this.setName(name); } @Override public void run() { super.run(); while (count > 0){ count--; System.out.println("Thr…
一:局部变量和实例变量 定义变量是指设定变量的数据类型和变量的名字,Java语言要求变量遵循先定义,再初始化,然后使用的规则. 作用域:指它的存在范围,只有在这个范围内,程序代码才能访问它. 变量的生命周期是指从一个变量被创建并分配内存空间开始,到这个变量被销毁并清除其所占用内存空间的过程. 局部变量(参数变量也可以看成是局部变量): 1)位置:定义在方法中或者在方法中的{} 2)使用:先赋值后使用 3)作用域:定义的方法中或者定义的{}中 4)生命周期:从变量的定义到方法调用结束 局部变量的例…
笔记8提到了类静态成员变量的访问方式,但静态成员变量存储在哪里呢?在网上查阅不少资料,发现好多内容都是过时的了,其中主流观点是静态成员变量存放在方法区.JDK8之前,静态成员变量确实存放在方法区:但JDK8之后就取消了"永久代",取而代之的是"元空间",永久代中的数据也进行了迁移,静态成员变量迁移到了堆中(方法区是JVM的规范,永久代是方法区的具体实现). 作者: 蝉蝉 请尊重作者劳动成果,转载请在标题注明"转载"字样,并标明原文链接: http…
一.数据类型 1.基本类型(8种,又称内置数据类型).6种数字类型(byte,short,int,long,float,double),一种字符型(char),一种布尔类型(boolean). byte: byte数据类型是8位.有符号的,以二进制补码表示的整数:占1个字节: 最小值是-128(-2^7): 最大值是127(2^7-1): 默认值是0: byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一: 例子:byte a = 100,byte…
标识符 常见的命名规则(见名知意) 包名全部小写 类或者接口,一个单词:首字母大写,多个单词:每个单词首字母大写. 方法或者变量:一个单词:首字母小写,多个单词:从第二个单词开始,每个单词首字母大写. 常量:全部大写.一个单词:大写.多个单词:大写,并用_隔开.​​ 变量 运算时,不是拿着空间去运算,真正使用的是该空间中的值.此空间被命名了变量名. 即使变量有了数据类型和变量名,若没有值,是一个垃圾空间,无任何意义. 变量的作用域,在同一个大括号内有效.同一作用域中不能有同名的变量. 原码.反码…
异常法停止线程: public class RealInterruptThread extends Thread { @Override public void run() { try { for (int i = 0; i < 5000000; i++) { if (Thread.interrupted()) { System.out.println("Thread is interrupted status, I need exit."); throw new Interru…
java选择语句之switch   //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字符串 { case 6: System.out.println(); break; case 5: System.out.println(); break; case 4: System.out.println(); break; default: System.out.println(); bre…
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静态变量 static修饰的变量为静态变量 在创建对象时,静态变量位于方法区中,而非像实例变量一样,位于堆内存中 一个类的所有对象共用相同静态变量,通过类名来调用静态变量,通过实例来调用虽然也符合语法,但不推荐 示例:静态变量的一个用法 class Employee{ private static i…
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为一个进程,例如:用字处理软件编辑文稿时,同时打开mp3播放程序听音乐,这两个独立的程序在同时运行,称为两个进程 进程要占用相当一部分处理器时间和内存资源 进程具有独立的内存空间 通信很不方便,编程模型比较复杂 多线程 一个程序中多段代码同时并发执行,称为多线程,线程比进程开销小,协作和数据交换容易…