1.什么是线程
(1)进程:是一个正在执行中的程序。
每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。
(2)线程:就是进程中的一个独立的控制单元。
线程在控制着进程的执行。
2.Java JVM 启动的时候会有一个进程java.exe.
该进程中至少一个线程负责java程序的执行。
而且这个线程运行的代码存在于main方法中。
该线程称之为主线程。
扩展:其实更细节说明jvm,jvm启动不止一个线程,还有负责垃圾回收机制的线程。
3.创建线程的方式
(1)第一种方式:继承Thread类。
步骤:
A.定义类继承Thread。
B.复写Thread类中的run方法。目的:将自定义代码存储在run方法。让线程运行。
C.调用线程的start方法,该方法两个作用:启动线程,调用run方法
(2)创建线程的第二种方式:实现Runable接口
步骤:
A.定义类实现Runnable接口
B.覆盖Runnable接口中的run方法。将线程要运行的代码存放在该run方法中。
C.通过Thread类建立线程对象。
D.将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。
E.调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。
(3)实现方式和继承方式有什么区别呢?
A.实现方式好处:避免了单继承的局限性。
B.在定义线程时,建立使用实现方式。
两种方式区别:
继承Thread:线程代码存放Thread子类run方法中。
实现Runnable,线程代码存在接口的子类的run方法。
关于线程的同步,一般有以下解决方法:
1. 在需要同步的方法的方法签名中加入synchronized关键字。
2. 使用synchronized块对需要进行同步的代码段进行同步。
3. 使用JDK 5中提供的java.util.concurrent.lock包中的Lock对象。
|