SlideShare a Scribd company logo
Java SE Lesson 15



1. 一个类若想被序列化,则需要实现 java.io.Serializable 接口,该接口中没有定义任何
   方法,是一个标识性接口(Marker Interface)
                               ,当一个类实现了该接口,就表示这个
   类的对象是可以序列化的。
2. 在序列化时,static 变量是无法序列化的;如果 A 包含了对 B 的引用,那么在序列化
   A 的时候也会将 B 一并地序列化;如果此时 A 可以序列化,B 无法序列化,那么当
   序列化 A 的时候就会发生异常,这时就需要将对 B 的引用设为 transient,该关键字
   表示变量不会被序列化。




3. 当我们在一个待序列化/反序列化的类中实现了以上两个 private 方法(方法声明要
    与上面的保持完全的一致)        ,那么就允许我们以更加底层、更加细粒度的方式控制序
    列化/反序列化的过程。
4. Java 中如果我们自己没有产生线程,那么系统就会给我们产生一个线程(主线程,
    main 方法就在主线程上运行)      ,我们的程序都是由线程来执行的。
5. 进程:执行中的程序(程序是静态的概念,进程是动态的概念)               。
6. 线程的实现有两种方式,第一种方式是继承 Thread 类,然后重写 run 方法;第二种
    是实现 Runnable 接口,然后实现其 run 方法。
7. 将我们希望线程执行的代码放到 run 方法中,然后通过 start 方法来启动线程,start
    方法首先为线程的执行准备好系统资源,然后再去调用 run 方法。当某个类继承了
    Thread 类之后,该类就叫做一个线程类。
8. 一个进程至少要包含一个线程。
9. 对于单核 CPU 来说,某一时刻只能有一个线程在执行(微观串行)             ,从宏观角度来
    看,多个线程在同时执行(宏观并行)           。
10. 对于双核或双核以上的 CPU 来说,可以真正做到微观并行。
11.
1) Thread 类也实现了 Runnable 接口,因此实现了 Runnable 接口中的 run 方法;
2) 当生成一个线程对象时,如果没有为其设定名字,那么线程对象的名字将使用如下
    形式:Thread-number,该 number 将是自动增加的,并被所有的 Thread 对象所共享
    (因为它是 static 的成员变量)    。
3) 当使用第一种方式来生成线程对象时,            我们需要重写 run 方法,因为 Thread 类的 run
    方法此时什么事情也不做。
4) 当使用第二种方式来生成线程对象时,我们需要实现 Runnable 接口的 run 方法,然
    后使用 new Thread(new MyThread())(假如 MyThread 已经实现了 Runnable 接口)来
    生成线程对象,这时的线程对象的 run 方法就会调用 MyThread 类的 run 方法,这样
    我们自己编写的 run 方法就执行了。
12. 关于成员变量与局部变量:如果一个变量是成员变量,那么多个线程对同一个对象
    的成员变量进行操作时,他们对该成员变量是彼此影响的(也就是说一个线程对成
    员变量的改变会影响到另一个线程)              。
13. 如果一个变量是局部变量,那么每个线程都会有一个该局部变量的拷贝,一个线程
    对该局部变量的改变不会影响到其他的线程。
14. 停止线程的方式:        不能使用 Thread 类的 stop 方法来终止线程的执行。      一般要设定一
    个变量,在 run 方法中是一个循环,循环每次检查该变量,如果满足条件则继续执
    行,否则跳出循环,线程结束。
15. 不能依靠线程的优先级来决定线程的执行顺序。
16. synchronized 关键字:当 synchronized 关键字修饰一个方法的时候,该方法叫做同步
    方法。
17. Java 中的每个对象都有一个锁(lock)或者叫做监视器(monitor)             ,当访问某个对
    象的 synchronized 方法时,表示将该对象上锁,此时其他任何线程都无法再去访问
    该 synchronized 方法了,直到之前的那个线程执行方法完毕后           (或者是抛出了异常)     ,
    那么将该对象的锁释放掉,其他线程才有可能再去访问该 synchronized 方法。
18. 如果一个对象有多个 synchronized 方法,某一时刻某个线程已经进入到了某个
    synchronized 方法, 那么在该方法没有执行完毕前,          其他线程是无法访问该对象的任
    何 synchronized 方法的。

More Related Content

Viewers also liked (18)

PPT
Presentacion Nuevo Sistema Cartera
tatianarojas
 
PPTX
Knowledge Is The Key
megbowman
 
PPTX
Pythagorean blog post
landonwhite
 
PPT
商务英语函电-Project 6
mootee
 
PPSX
Centro de flora silvestre Miguel Mahchi 2
Elsa María Fries Castillo
 
PPT
Galicia Salma
avemariamanresa
 
PDF
Wedia at AllThingsFacebook 2012
Panos Kontopoulos
 
PPT
Escola oficial d'idiomes
EduardLlados
 
PPTX
Classification
carissaf
 
PDF
Taller de redacción
Melissa Villada
 
PPTX
Teaching Vowel Pronunciation
maricheledeguzman
 
PDF
Ensayo ust
javieeeera
 
PPTX
Fotografia Diapositivas
JOHANA MARCELA CASTRO CARDENAS
 
PPTX
RECONOCIMIENTO DE INFRAESTRUCTURA -PLAZA TOCANCIPA
hildacuervo1482
 
DOCX
cardioide
jhoelcorozo
 
PPTX
For charities
surfingrainbows
 
PPTX
Row book summaries
hmfowler
 
Presentacion Nuevo Sistema Cartera
tatianarojas
 
Knowledge Is The Key
megbowman
 
Pythagorean blog post
landonwhite
 
商务英语函电-Project 6
mootee
 
Centro de flora silvestre Miguel Mahchi 2
Elsa María Fries Castillo
 
Galicia Salma
avemariamanresa
 
Wedia at AllThingsFacebook 2012
Panos Kontopoulos
 
Escola oficial d'idiomes
EduardLlados
 
Classification
carissaf
 
Taller de redacción
Melissa Villada
 
Teaching Vowel Pronunciation
maricheledeguzman
 
Ensayo ust
javieeeera
 
Fotografia Diapositivas
JOHANA MARCELA CASTRO CARDENAS
 
RECONOCIMIENTO DE INFRAESTRUCTURA -PLAZA TOCANCIPA
hildacuervo1482
 
cardioide
jhoelcorozo
 
For charities
surfingrainbows
 
Row book summaries
hmfowler
 

Similar to [圣思园][Java SE]Java se lesson 15 (15)

PPT
线程与并发
Tony Deng
 
DOC
Java多线程编程详解
yiditushe
 
PPTX
Notes of jcip
Dai Jun
 
PDF
Multithread
Medivh2011
 
PDF
最新Java技术内存模型
yiditushe
 
PDF
Java并发核心编程
wavefly
 
DOC
深入剖析Concurrent hashmap中的同步机制(下)
wang hongjiang
 
PDF
笔记
pzh244658240
 
PPTX
Java多线程设计模式
Tony Deng
 
PDF
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Ady Liu
 
PDF
[圣思园][Java SE]Java se lesson 16
ArBing Xie
 
DOC
Java多线程:驾驭Synchronize的方法
yiditushe
 
PPT
Java并发编程培训
longhao
 
PPT
Java并发编程培训
dcshi
 
DOC
Java面试宝典
ma tao
 
线程与并发
Tony Deng
 
Java多线程编程详解
yiditushe
 
Notes of jcip
Dai Jun
 
Multithread
Medivh2011
 
最新Java技术内存模型
yiditushe
 
Java并发核心编程
wavefly
 
深入剖析Concurrent hashmap中的同步机制(下)
wang hongjiang
 
笔记
pzh244658240
 
Java多线程设计模式
Tony Deng
 
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Ady Liu
 
[圣思园][Java SE]Java se lesson 16
ArBing Xie
 
Java多线程:驾驭Synchronize的方法
yiditushe
 
Java并发编程培训
longhao
 
Java并发编程培训
dcshi
 
Java面试宝典
ma tao
 
Ad

More from ArBing Xie (20)

PDF
[圣思园][Java SE]Java se lesson 3
ArBing Xie
 
PDF
[圣思园][Java SE]Swing
ArBing Xie
 
PDF
[圣思园][Java SE]Websphere.application.developer(wsad)使用外置win cvs解决方案
ArBing Xie
 
PDF
[圣思园][Java SE]Strategy
ArBing Xie
 
PDF
[圣思园][Java SE]Reflection
ArBing Xie
 
PDF
[圣思园][Java SE]Ooad与uml lesson 2
ArBing Xie
 
PDF
[圣思园][Java SE]Observer
ArBing Xie
 
PDF
[圣思园][Java SE]Network
ArBing Xie
 
PDF
[圣思园][Java SE]Jdk5
ArBing Xie
 
PDF
[圣思园][Java SE]Java se lesson 22
ArBing Xie
 
PDF
[圣思园][Java SE]Java se lesson 21
ArBing Xie
 
PDF
[圣思园][Java SE]Java se lesson 20
ArBing Xie
 
PDF
[圣思园][Java SE]Java se lesson 17
ArBing Xie
 
PDF
[圣思园][Java SE]Java se lesson 13
ArBing Xie
 
PDF
[圣思园][Java SE]Java se lesson 12
ArBing Xie
 
PDF
[圣思园][Java SE]Java se lesson 11
ArBing Xie
 
PDF
[圣思园][Java SE]Java se lesson 10
ArBing Xie
 
PDF
[圣思园][Java SE]Java se lesson 9
ArBing Xie
 
PDF
[圣思园][Java SE]Java se lesson 8
ArBing Xie
 
PDF
[圣思园][Java SE]Java se lesson 5
ArBing Xie
 
[圣思园][Java SE]Java se lesson 3
ArBing Xie
 
[圣思园][Java SE]Swing
ArBing Xie
 
[圣思园][Java SE]Websphere.application.developer(wsad)使用外置win cvs解决方案
ArBing Xie
 
[圣思园][Java SE]Strategy
ArBing Xie
 
[圣思园][Java SE]Reflection
ArBing Xie
 
[圣思园][Java SE]Ooad与uml lesson 2
ArBing Xie
 
[圣思园][Java SE]Observer
ArBing Xie
 
[圣思园][Java SE]Network
ArBing Xie
 
[圣思园][Java SE]Jdk5
ArBing Xie
 
[圣思园][Java SE]Java se lesson 22
ArBing Xie
 
[圣思园][Java SE]Java se lesson 21
ArBing Xie
 
[圣思园][Java SE]Java se lesson 20
ArBing Xie
 
[圣思园][Java SE]Java se lesson 17
ArBing Xie
 
[圣思园][Java SE]Java se lesson 13
ArBing Xie
 
[圣思园][Java SE]Java se lesson 12
ArBing Xie
 
[圣思园][Java SE]Java se lesson 11
ArBing Xie
 
[圣思园][Java SE]Java se lesson 10
ArBing Xie
 
[圣思园][Java SE]Java se lesson 9
ArBing Xie
 
[圣思园][Java SE]Java se lesson 8
ArBing Xie
 
[圣思园][Java SE]Java se lesson 5
ArBing Xie
 
Ad

[圣思园][Java SE]Java se lesson 15

  • 1. Java SE Lesson 15 1. 一个类若想被序列化,则需要实现 java.io.Serializable 接口,该接口中没有定义任何 方法,是一个标识性接口(Marker Interface) ,当一个类实现了该接口,就表示这个 类的对象是可以序列化的。 2. 在序列化时,static 变量是无法序列化的;如果 A 包含了对 B 的引用,那么在序列化 A 的时候也会将 B 一并地序列化;如果此时 A 可以序列化,B 无法序列化,那么当 序列化 A 的时候就会发生异常,这时就需要将对 B 的引用设为 transient,该关键字 表示变量不会被序列化。 3. 当我们在一个待序列化/反序列化的类中实现了以上两个 private 方法(方法声明要 与上面的保持完全的一致) ,那么就允许我们以更加底层、更加细粒度的方式控制序 列化/反序列化的过程。 4. Java 中如果我们自己没有产生线程,那么系统就会给我们产生一个线程(主线程, main 方法就在主线程上运行) ,我们的程序都是由线程来执行的。 5. 进程:执行中的程序(程序是静态的概念,进程是动态的概念) 。 6. 线程的实现有两种方式,第一种方式是继承 Thread 类,然后重写 run 方法;第二种 是实现 Runnable 接口,然后实现其 run 方法。 7. 将我们希望线程执行的代码放到 run 方法中,然后通过 start 方法来启动线程,start 方法首先为线程的执行准备好系统资源,然后再去调用 run 方法。当某个类继承了 Thread 类之后,该类就叫做一个线程类。 8. 一个进程至少要包含一个线程。 9. 对于单核 CPU 来说,某一时刻只能有一个线程在执行(微观串行) ,从宏观角度来 看,多个线程在同时执行(宏观并行) 。 10. 对于双核或双核以上的 CPU 来说,可以真正做到微观并行。 11. 1) Thread 类也实现了 Runnable 接口,因此实现了 Runnable 接口中的 run 方法; 2) 当生成一个线程对象时,如果没有为其设定名字,那么线程对象的名字将使用如下 形式:Thread-number,该 number 将是自动增加的,并被所有的 Thread 对象所共享 (因为它是 static 的成员变量) 。 3) 当使用第一种方式来生成线程对象时, 我们需要重写 run 方法,因为 Thread 类的 run 方法此时什么事情也不做。
  • 2. 4) 当使用第二种方式来生成线程对象时,我们需要实现 Runnable 接口的 run 方法,然 后使用 new Thread(new MyThread())(假如 MyThread 已经实现了 Runnable 接口)来 生成线程对象,这时的线程对象的 run 方法就会调用 MyThread 类的 run 方法,这样 我们自己编写的 run 方法就执行了。 12. 关于成员变量与局部变量:如果一个变量是成员变量,那么多个线程对同一个对象 的成员变量进行操作时,他们对该成员变量是彼此影响的(也就是说一个线程对成 员变量的改变会影响到另一个线程) 。 13. 如果一个变量是局部变量,那么每个线程都会有一个该局部变量的拷贝,一个线程 对该局部变量的改变不会影响到其他的线程。 14. 停止线程的方式: 不能使用 Thread 类的 stop 方法来终止线程的执行。 一般要设定一 个变量,在 run 方法中是一个循环,循环每次检查该变量,如果满足条件则继续执 行,否则跳出循环,线程结束。 15. 不能依靠线程的优先级来决定线程的执行顺序。 16. synchronized 关键字:当 synchronized 关键字修饰一个方法的时候,该方法叫做同步 方法。 17. Java 中的每个对象都有一个锁(lock)或者叫做监视器(monitor) ,当访问某个对 象的 synchronized 方法时,表示将该对象上锁,此时其他任何线程都无法再去访问 该 synchronized 方法了,直到之前的那个线程执行方法完毕后 (或者是抛出了异常) , 那么将该对象的锁释放掉,其他线程才有可能再去访问该 synchronized 方法。 18. 如果一个对象有多个 synchronized 方法,某一时刻某个线程已经进入到了某个 synchronized 方法, 那么在该方法没有执行完毕前, 其他线程是无法访问该对象的任 何 synchronized 方法的。