1:线程问题:
单线程:一个应用程序只有一条执行路径
多线程:一个应用程序有多条执行路径
(2)Java程序的运行原理及JVM的启动是多线程的吗?
A:Java命令去启动JVM,JVM会启动一个进程,该进程会启动一个主线程。
B:JVM的启动是多线程的,因为它最低有两个线程启动了,主线程和垃圾回收线程。
(3)多线程的实现
A:继承Thread类
public class SellTicket extends Thread {
private static int tickets = 100;
@Override
public void run() {
while (true) {
if (tickets > 0) {
System.out.println(getName() + "正在出售第" + (tickets--) + "张票");
}
}
}
}
@通过以上继承Thread类我们就实现了多线程,我们可以通过创建SellTicket对象实现了多线程
B:实现Runnable接口
(4)线程的调度和优先级问题
A:线程的调度
a:分时调度
b:抢占式调度 (Java采用的是该调度方式)
B:获取和设置线程优先级
a:默认是5
b:范围是1-10
(5)线程的生命周期
A:新建
B:就绪
C:运行
D:阻塞
E:死亡
(6)多线程安全问题的原因
A:是否有多线程环境
B:是否有共享数据
C:是否有多条语句操作共享数据
(7)同步解决线程安全问题
A:同步代码块
synchronized(对象) {
需要被同步的代码;
}
这里的锁对象可以是任意对象。
B:同步方法
把同步加在方法上。
这里的锁对象是this
C:静态同步方法
把同步加在方法上。
这里的锁对象是当前类的字节码文件对象
@lock()、unlock()也能实现线程的安全问题。
(8)回顾以前的线程安全的类
A:StringBuffer
B:Vector
C:Hashtable |
|