java-基础3
第二章 提升
2.1 构造
Java创建对象的几种方式(重要):
(1) 用new语句创建对象,这是最常见的创建对象的方法。
(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
(3) 调用对象的clone()方法。
(4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
(1)和(2)都会明确的显式的调用构造函数 ;(3)是在内存上对已有对象的影印,所以不会调用构造函数 ;(4)是从文件中还原类的对象,也不会调用构造函数。
普通的类方法是可以和类名同名的,和构造方法唯一的区分就是,构造方法没有返回值。
对象的初始化顺序:(1)类加载之后,按从上到下(从父类到子类)执行被static修饰的语句;(2)当static语句执行完之后,再执行main方法;(3)如果有语句new了自身的对象,将从上到下执行构造代码块、构造器(两者可以说绑定在一起)。构造代码块就是大括号直接括起来的。
2.2 进程
进程:指可执行程序并存放在计算机存储器的一个指令序列,它是一个动态执行的过程。
线程:是比进程还要小的运行单位,一个进程包含多个线程。
创建
1、创建一个Thread类,或者一个Thread子类的对象;


通过继承Thread类的方式创建线程类,重写run()方法。
Thread类中start()和run()方法的区别了。
start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程,进而调用run()方法来执行任务。
单独的调用run()就跟调用普通方法是一样的,已经失去线程的特性了。因此在启动一个线程的时候一定要使用start()而不是run()。
2、创建一个实现Runnable接口的类的对象。

线程状态

线程生命周期

线程优先级



同步
Synchronized关键字用在:成员方法、静态方法、语句块
线程间通信
wait()方法:中断方法的执行,使线程等待
notify()方法:唤醒处于等待的某一个线程,使其结束等待
notifyAll()方法:唤醒所有处于等待的线程,使他们结束等待
线程分为守护线程和非守护线程(即用户线程)。
只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。
守护线程最典型的应用就是 GC (垃圾回收器)

浙公网安备 33010602011771号