线程初级相关问题

进程

程序都是静止的 只有程序真正运行起来 才成进程
程序中的一个顺序控制流程 ,同时也是CPU的基本调度单位 。 进程是由多个线程组成 , 彼此间完成不同的工作 交替执行 称为 多线程

一 线程的组成

1)CPU 时间片: 操作系统OS为每个线程分配执行的时间
2) 运行数据 :
堆空间: 存储线程需要的使用的对象 多线程共享堆空间对象
栈空间 存储线程需要的局部变量 每个线程独立的栈
2) 逻辑代码 ;

二 线程创建

1继承Thread 2 覆盖run 方法 3 创建 对象 4 调用 static方法
Implement Runable
1 实现线程任务类接口 2 覆盖方法 3创建线程类对象 4 将次类放进线程的类里面 5调用static方法*(由虚拟接调用run方法)
线程初级相关问题

三 线程状态(6种

(JDK5 之后 就绪和运行状态统一交Runnable)

初始状态 (线程对象呗创建,只在堆中开辟内存 ,与常规对象无异)

就绪状态 (调用static之后 进入就绪状态 等待os选择分配时间片)
运行状态(获得时间片之后 进入运行状态 如果时间片到期 就回到就绪状态)

(等待状态 wait 有期限等待 如果等待时间到了就会回到就绪状态竞争时间片)

(无限期等待 join 无限期等待 等插队结束完 去回到就绪状态竞争时间片)

(阻塞状态 当加锁操作完成时候还回时间片 是会回到就绪状态 )

终止状态(Terminated)(主线程main()或独立线程run()结束进入终止状态 并释放所有时间片)

四 常用方法

1 休眠
静态方法 直接类名.sleep(毫秒)
注意{1 sleep写在那个线城 那个线程休眠了
2 sleep 写在run方法里 要去捕获他

}
2 放弃 public static void yeild()
的当前线程主动放弃时间片 等待下一次竞争
3 public final void join()
注意{
需要异常处理

五 线程不安全

当多线程并发访问临界资源时(堆中共享对象) , 如果破坏院子操作(从操作开始到操作结束),可能会造成数据不一致
临界资源:共享资源(同一对象) 一次仅允许一个线程使用 才能保证正确性
原子操作 :不可分割的多部操作