多线程:一个进程中使用了多个线程来完成不同的工作,称之为多线程,多个进程交替使用 CPU资源,并非正真的同时,线程每次执行时常由CPU时间片长度决定
java.lang.Thread
主线程
main()就是主线程入口
产生其他线程的线程
必须最后完成执行,因为主线程执行各种关闭动作。
创建和启动线程
继承java.lang.Thread或者实现java.lang.Runnable接口
重写run()方法
调用start()启动线程
线程的状态
线程的优先级,休眠、强制运行、礼让
setPriority() sleep() join() yield()
高优先级的线程获得cpu资源的概率更大
休眠使一个线程进入阻塞状态,休眠结束后进入就绪状态
强制运行暂停当前线程,等待其他线程结束后再继续执行本线程
礼让暂停当前线程,使当前线程进入就绪状态,允许其他同优先级的线程获得运行机会
多线程共享数据引发的问题
在声明方法时使用synchronized关键字修饰
或者使用synchronized修饰代码块
线程安全
线程安全 非线程安全
Hashtable HashMap
StringBuffer StringBuilder
ArrayList