进程:正在运行的应用程序
线程:进程中的一条执行路径
多线程:一个应用程序中的多条执行路径
JVM的启动是多线程的吗
是的, 最少有2个线程
一个是主线程, 执行java代码的
另一个是启动垃圾回收器的线程
(重点)线程创建的方式:
方式1: 继承 Thread
a: 自定义类 继承 Thread
b: 在自定义类中,重写run方法
c: 创建自定义类对象
d: 启动线程
方式2: 实现 Runnable
a: 自定义类 实现 Runnable
b: 自定义类中 重写run方法
c: 创建自定义类对象
d: 通过Thread来创建线程对象, 把自定义对象作为参数使用
e: 启动线程
构造方法:
public Thread()
public Thread(String name)
public Thread(Runnable target)
public Thread(Runnable target, String name)
方法:
public final String getName(): 获取线程名字
public final void setName(String name) : 改变线程名称,使之与参数 name 相同。
public static Thread currentThread() : 返回对当前正在执行的线程对象的引用
public final int getPriority(): 返回线程的优先级。
public final void setPriority(int newPriority) 更改线程的优先级
public static void sleep(long millis):在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),
public final void join():等待该线程终止
public static void yield():暂停当前正在执行的线程对象,并执行其他线程
public final void setDaemon(boolean on)将该线程标记为守护线程或用户线程
public final void stop()强迫线程停止执行
public void interrupt() : 中断线程。
(重点)线程生命周期图解: 看图
同步机制: synchronized
方式1:同步代码块
格式:
synchronized (对象) {
多个线程所共享的操作数据
}
锁对象: 多个线程对象,使用同一个锁对象, 锁对象可以是任意对象
方式2: 同步方法
把同步关键字 加在方法上
锁对象: this
方式3: 静态同步方法
把同步关键字 加在方法上
锁对象: 类名.class
同步的好处:
解决了线程安全问题
同步弊端
效率低
如果出现了同步嵌套,就容易产生死锁问题
死锁:
是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待现象
Lock锁:
jdk1.5产生的, 把锁封装成了对象
lock() 获取锁
unlock() 解锁
案例:
卖电影票案例
|
|