多线程:线程和进程,一个进程包含多个线程,按进程分配资源
创建方式
方式一:实现继承 thread
Java程序运行至少有两个线程,分别是main线程和垃圾回收线程
多线程中代码的编写顺序和执行顺序没有关系.
方式二:实现runnable
多线程中跑的是同一个对象实例,可以天然实现数据共享,
方式一要数据静态化才能数据共享
线程安全问题产生条件:1,数据共享.2,要有多步操作.
利用同步解决:在某个时刻就只准许一个线程访问,只有当这个线程访问完毕,其他的线程才有机会执行。
1、同步代码块:
能不能同步的关键是锁是否相同。
同步代码块的锁可以是任何对象实例。但是多个线程用同一个锁才能锁住
2,、同步函数:
同步函数的锁就是this,不用指定,默认为this
静态同步函数的锁是类的字节码文件对象实例
分五个状态:创建,就绪,运行,阻塞,死亡.
关于死锁:
尽量避免,一旦形成无解,只能重新设计