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 (垃圾回收器)

 

posted @ 2018-10-28 10:50  huinina  阅读(59)  评论(0)    收藏  举报