首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

详解Class文件结构(下)

7.字段表集合(Field Info) 字段表(field_info)用于描述接口或者声明变量。字段包括变量以及实例变量,但不包括在方法内部声明局部变量。...继续以Test.class文件分析,容量计数器methods_count值为Ox0002,表示由两个方法,疑惑?看文章开头代码只有一个main方法啊,为什么会有两个?...如果方法在子类没有被重写,方法表集合中就不会出现来自信息。...而在Class文件里对一个方法特征签名比编译期多,也就是说如果两个方法有相同名称和特征签名,但返回值不同,那么也是可以合法存在于同一个Class文件。...在class文件对属性表限定并不是很严格,只要不要与已有属性名重复,任何不人实现编译器都可以向属性表写入自己定义属性信息,虚拟机在运行时会忽略掉它不认识属性。

72920

Java多线程编程核心技术

()); } 在控制台中输出main其实就是一个名称叫作main线程在执行main()方法代码。...线程优先继承特性 在Java线程优先具有继承性,比如A线程启动B线程,则B线程优先与A线程是一样。...当存在父子类继承关系时,子类是完全可以通过“可重入锁”调用同步方法出现异常,锁自动释放 当一个线程执行代码出现异常时,其所持有的锁会自动释放。...说明:子线程线程各有各所拥有的值。 InheritableThreadLocal 使用 使用 InheritableThreadLocal 可以在子线程取得线程继承下来值。...().getThreadGroup().getParent().getName()); System.out.println("main 线程所在线程线程线程名称:

1.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

JavaSE笔记

在Java编程,我们使用成员变量表示数据模型,用成员方法表示行为模型。 使用表示某些具有相同属性和行为事物。...: 子类重新声明从父继承来方法,称为方法重写; 方法重写时,方法声明部分要和保持一致(返回值类型,方法名,参数); 重写方法访问权限要大于等于方法访问权限; 子类重写方法,子类对象调用是子类重写后方法...,或者是把子类也定义为抽象; 如果一个继承抽象还有上级抽象,那么子类需要要重写所有抽象所有抽象方法; 抽象也可以继承非抽象,同时继承了所有非私有的属性和方法; 9、接口...,即:键不能重复,值可以重复,一个键只能对应一个值,每个值可以有多个键; 常用方法: put(K key,V value):向map集合添加键值对,返回上一次该键对应值,初次添加,返回null; putAll...设置线程名称 t1.setName("线程A"); t2.setName("线程B"); 4、线程同步 实例: Bank: public class Bank {

76520

JAVA基础复习(重点)

在Java编程,我们使用成员变量表示数据模型,用成员方法表示行为模型。 使用表示某些具有相同属性和行为事物。...: 子类重新声明从父继承来方法,称为方法重写; 方法重写时,方法声明部分要和保持一致(返回值类型,方法名,参数); 重写方法访问权限要大于等于方法访问权限; 子类重写方法,子类对象调用是子类重写后方法...,或者是把子类也定义为抽象; 如果一个继承抽象还有上级抽象,那么子类需要要重写所有抽象所有抽象方法; 抽象也可以继承非抽象,同时继承了所有非私有的属性和方法; 9、接口...,即:键不能重复,值可以重复,一个键只能对应一个值,每个值可以有多个键; 常用方法: put(K key,V value):向map集合添加键值对,返回上一次该键对应值,初次添加,返回null; putAll...设置线程名称 t1.setName("线程A"); t2.setName("线程B"); 4、线程同步 实例: Bank: public class Bank {

61420

一文打通java线程

Thread有关方法 void start(): 启动线程,并执行对象run()方法 run(): 线程在被调度时执行操作 String getName(): 返回线程名称 void...setName(String name):设置该线程名称 static Thread currentThread(): 返回当前线程。...getPriority() :返回线程优先值         setPriority(int newPriority) :改变线程优先 说明         线程创建时继承线程优先...        低优先只是获得调度概率低,并非一定是在高优先线程之后才被调用 补充:线程分类 Java线程分为两:一种是守护线程,一种是用户线程。...调用方法必要条件:当前线程必须具有对该对象监控权(加锁)

22950

线程原理和常用方法以及Thread和Runnable区别

文章目录 多线程原理 随机性打印 多线程内存图解 Thread常用方法 获取线程名称 getName() 设置线程名称 setName() 或者 new Thread("线程名字") 使当前正在执行线程以指定毫秒数暂停...Thread-2 Thread-0 Thread-1 设置线程名称 setName() 或者 new Thread(“线程名字”) 使用Thread方法setName(名字) void setName...创建一个带参数构造方法,参数传递线程名称;调用带参构造方法,把线程名称传递给,让(Thread)给子线程起一个名字 Thread(String name) 分配新 Thread 对象...对象,构造方法传递Runnable接口实现对象 Thread t = new Thread(run);//打印线程名称 //5.调用Threadstart方法,开启新线程执行...new /接口(){ 重复/接口中方法 }; * @author zjq */ public class Demo01InnerClassThread

21220

JavaSE基础 (全网最全知识点)

(我们编译出来字节码文件也是使用Unicode编码,所以利用这种特性,其实Java支持中文变量名称方法名称甚至是名) 数据类型转换 以下都是自动转换,非自动转换就需要强制转换。...访问控制 可作用于方法、变量上。(创建方法变量等默认是default,不用特意写出来) 和文件名称相同,只能是public,并且一个java文件只能有一个public class!...; } } 继承特点: 子类具有全部属性(包括private属性,私有不能直接使用,但可以通过反射使用),同时子类还能有自己方法。 继承只能继承一个,不支持多继承!...调用方法和变量super.way() 子类方法调用变量优先:形参列表 > 当前成员变量 > 成员变量 public void setTest(int test){ test...//Main第7行出现问题 程序运行出现异常

63610

几种常见Runtime Exception

注意:覆盖方法子类方法不能抛出比方法更多异常,所以,有时设计方法时会声明抛出异常,但实际实现方法代码却并不抛出异常,这样做目的就是为了方便子类方法覆盖方法时可以抛出异常。...在本级,只能处理一部分内容,有些处理需要在更高一环境完成,所以应该再次抛出异常。这样可以使每异常处理器处理它能够处理异常。...如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出异常,那么这整个程序也就退出了。...java.lang.ClassFormatError 格式错误。当Java虚拟机试图从一个文件读取Java,而检测到该文件内容不符合有效格式时抛出。...java.lang.ClassNotFoundException 找不到异常。当应用试图根据字符串形式名构造,而在遍历CLASSPAH之后找不到对应名称class文件时,抛出该异常。

1.1K20

第六阶段-多线程:【第一章 多线程

) 获取和设置线程对象 //获取线程名称 public final String getName() //设置线程名称 public final void setName(String name...,要手动写MyThread带参构造方法方法一不用) //MyThread public MyThread(String name){ super(name);//直接调用就好 }...//MyThreadTest MyThread my = new MyThread("admin"); 获取线程名称 注意:重写run方法内获取线程名称方式 //Thread getName(...:main方法所在测试并不继承Thread,因此并不能直接使用getName()方法来获取名称。...任意对象 B:同步方法格式及锁对象问题? 把同步关键字加在方法上 同步方法锁对象是谁呢? this C:静态方法及锁对象问题? 静态方法锁对象是谁呢? 字节码文件对象。

50241

JAVA入门学习十

在某个线程运行代码创建了一个新Thread对象时,新线程优先被设置为创建线程优先,当且仅当创建线程是一个守护进程,新线程才是守护线程。...//方法 void start() //导致该线程开始执行 java虚拟机自动调用这个线程run方法。 String getName() //返回此线程名称。...两种实现方式优缺点: 继承Thread 好处是:可以直接使用Thread方法,代码简单 弊端是:如果已经有了,就不能用这种方法(由于JAVA是单继承特性) 实现Runnable接口 好处是:...即使自己定义线程有了也没关系,因为有了也可以实现接口,而且接口是可以多实现(扩展性比较好) 弊端是:不能直接使用Thread方法需要先获取到Thread线程对象后,才能得到Thread...; } }.start(); //方式3:通过ThreadsetName方法进行设置线程名称 Thread th = new Thread()

24920

JAVA入门学习十

在某个线程运行代码创建了一个新Thread对象时,新线程优先被设置为创建线程优先,当且仅当创建线程是一个守护进程,新线程才是守护线程。...//方法 void start() //导致该线程开始执行 java虚拟机自动调用这个线程run方法。 String getName() //返回此线程名称。...两种实现方式优缺点: 继承Thread 好处是:可以直接使用Thread方法,代码简单 弊端是:如果已经有了,就不能用这种方法(由于JAVA是单继承特性) 实现Runnable接口 好处是:...即使自己定义线程有了也没关系,因为有了也可以实现接口,而且接口是可以多实现(扩展性比较好) 弊端是:不能直接使用Thread方法需要先获取到Thread线程对象后,才能得到Thread...; } }.start(); //方式3:通过ThreadsetName方法进行设置线程名称 Thread th = new Thread()

31610

JavaSE 基础学习之六 —— Java 反射操作

具体对于和对象: 任意一个,都能够知道这个所有属性和方法; 任意一个对象,都能够调用它任意一个方法和属性; 要想解剖一个,必须先要获取到该类字节码文件对象。...而解剖使用就是 Class 方法。所以先要获取到每一个字节码文件 *.class 对应 Class 类型对象。在 《Java基础之—反射(非常重要)》 一文绘制了反射加载过程: ?...(1) java.lang.reflect.Method 方法反射 获取一个方法对象 方法名称 参数列表(类型类型) 如何用方法反射操作方法?...是它方法签名,(int.class, double.class, boolean.class) 是它参数列表类型类型。...简要介绍几种不同获取成员方法方式: 批量获取成员方法: public Method[] getMethods(): 获取所有”公有方法”;该方法包含了方法,也包含 Object

47620

Java多线程线程属性

true=守护线程,false=用户线程。 当JVM中所有的线程都是守护线程,JVM将退出。 具有代表性线程: main线程:用户线程,gc线程:守护线程。 子线程会默认继承线程这个属性。...必须在调用start()之前设置这个属性,线程运行设置线程守护属性会抛出异常。 priority 线程优先。 优先线程概率上会优先运行。并不可靠....Java线程优先有10个,默认是5,且子线程会继承线程优先。...不可靠:java线程优先有10个,但是OS线程优先并不一定是10个,所以存在java好几个优先对应OS同一个优先,不可靠。 程序不应该依赖优先。 优先一般默认设置成5即可。...()设置线程名称

82920

El表达式&JSTL标签库

El表达式&JSTL标签库 El表达式全称是:Expression Language 是表达式语言 作用:EL表达式主要是替代Jsp页面表达式脚本在Jsp页面中进行数据输出; 页面开启el表达式支持...8786], category=[励志, 故事], map={k1=v1, k2=v2, k3=v3}} 输出map:{k1=v1, k2=v2, k3=v3} 输出map特定值:v3 输出list...表达式2:表达式3 如果表达式值为真返回表达式2值 否则返回表达式三值 "."运算和[]括号运算符 .运算可以输出bean对象某个属性值 []括号运算,可以输出有序集合某个元素值。...并且[]括号运算,还可以输出map集合key里含有特殊字符key值; 11个EL隐含对象 11个隐含对象是EL表达式自己定义们可以直接使用。...h3> 输出: 小于50 注意事项:1.标签里不能使用html注释,要使用Jsp注释 2.when标签里标签一定要是

45620

Thread实现及方法

join(long)是在内部使用wait(long)来实现,所以join(long)方法具有释放同步锁特点。 join与interrupt方法如果相遇,则会出现异常,但进程并不会结束。...原因是线程A还在继续运行,线程A并没有出现异常,是正常状态下继续执行。 优先方法 描述:如果CPU比较忙,设置优先可能会获得更多CPU时间片,但是闲时优先高低几乎不会有任何作用。...线程默认优先和它保持一致,一般情况下都是5,因为main线程优先是5,所以由main线程所派生出来线程优先默认都是5。...,这个方法可以打破JAVA加载器委托机制,有时候该方法也被称为JAVA加载器后门。...,wait方法是Object方法,该方法用来将当前线程放入到“预执行队列”,并且在wait所在代码行进行停止执行,直到接到通知或被中断为止。

79641

Java课程主要内容回顾

参数声明指定了方法接受参数类型和参数名。 在Java方法可以拥有相同名称具有不同参数列表,这就是方法重载(Overloading)。...方法重载允许在同一个定义多个具有相同名称但参数列表不同方法。...子类方法签名必须与中被覆盖方法相同(方法名、参数列表和返回类型完全一致)。 目的: 允许子类提供自己实现,替换方法实现。...不同点: 覆盖是子类重写方法方法签名必须一致;重载是在同一个方法名相同但方法签名不同。 覆盖发生在继承关系,重载发生在同一个。...覆盖只能通过子类覆盖方法;重载可以在同一个定义多个具有相同名称但不同参数列表方法。 总体来说,覆盖是方法多态性表现,重载是方法多样性表现。

8910

2.1synchronized同步方法

可以看出,方法变量不存在非线程安全问题,永远都是线程安全。这是方法内部变量是私有的特性造成。...本例,两个线程同时访问了一个没有同步方法,如果两个线程同时操作业务对象实例变量。就有可能出现“非线程安全”问题。...上述示例表明:当存在父子类继承时,子类完全可以使用锁重入调用同步方法。 2.1.7出现异常,锁自动释放: 当一个线程执行代码出现异常时,其所持有的锁会自动释放。...可以看到是,当出现异常后,锁就被释放了,线程B能够进入方法正常打印。...2.1.8同步不具有继承性: 同步是不可以被继承业务: public class FatherService { synchronized public void fatherService

1.1K100

Java从入门到精通十二(java线程)

jvm程序需要执行时候,操作系统将jvm从磁盘存储器将其调入到内存,然后创建一个jvm进程。jvm启动主线程,主线程调用main方法,所以主线程也就是从main方法这里开始执行了。...,将指定 name 作为其名称,作为 group 所引用线程一员,并具有指定堆栈大小。...void setName(String name) 改变线程名称,使之与参数 name 相同。 void setPriority(int newPriority) 更改线程优先。...registerNatives()是一个注册方法,位于static修饰静态代码块。这样作用就是在Thread被jvm直接运行。在初始化时候会执行一次,并且执行优先高于非静态代码块。...super(name);//调用这个构造方法,这样就可以在new实例化时候传入字符串。

73960
领券