主线程
-
Thread类
Java提供了java.lang.Thread类支持多线程编程 -
主线程
main()方法即为主线程入口
产生其他子线程的线程
必须最后完成执行,因为它执行各种关闭动作
在Java中创建线程的两种方式
- 继承java.lang.Thread类
- 实现java.lang.Runnable接口
调用run() 只有主线程一条执行路径
调用start() 多条执行路径,主线程和子线程并行交替执行
两种创建线程的方式
继承Thread类
- 编写简单,可直接操作线程
- 适用于单继承
实现Runnable接口
- 避免单继承局限性
- 便于共享资源
void setPriority(int newPriority) //更改线程的优先级
static void sleep(long millis) //在指定的毫秒数内让当前正在执行的线程休眠
void join() //等待该线程终止
static void yield() //暂停当前正在执行的线程对象,并执行其他线程
void interrupt() //中断线程
boolean isAlive() //测试线程是否处于活动状态
同步代码块
synchronized(syncObject){
//需要同步的代码
}
public void run() {
while (true) {
synchronized (this) { //同步代码块
// 省略修改数据的代码......
// 省略显示信息的代码......
}}}
线程安全
StringBuffer
- 线程安全
StringBuilder
- 非线程安全
Hashtable
- 实现了Map接口,Hashtable继承Dictionary类
- 线程安全,效率较低
- 键和值都不允许为null
HashMap
- 实现了Map接口,继承AbstractMap类
- 非线程安全,效率较高
- 键和值都允许为null