一个进程对应一个应用程序,拥有独立的内存空间
线程是基于进程内部独立执行的运行路径,线程是共享内存地址空间,GC垃圾回收器也是一个线程。
创建Thread线程对象的两种方法:
1 创建一个类继承Thread ,重写Thread 的run()方法,书写run()方法体,调用run()方法之前一定要先调用Thread的Start()方法,分配线程资源;
2 实现runable接口,然后再把实现类对象传递线Thread对象,再有thread调用Start()方法;
线程状态
1 新建状态(new 线程对象)
2就绪状态(调用start()方法,但start()还没调用run()方法)
3 运行......中断状态(执行run()方法))
4死亡状态 (执行run()方法结束)
造成线程运行.....中断的原因:
1、线程没有抢到CPU
2休眠状态
3 等待唤醒状态 wait———notify
4 阻塞 由于IO时间,线程呗阻塞
5挂起——yield()
线程具有优先级最低1,最高10,默认5,setPriority()方法可以进行设置,但是只是提高线程抢占CPU概率高,不能代表每次都能抢赢;
线程安全性问题:
多个线程访问同一资源时容易出现安全性问题,可以通过线程同步来解决,让每次访问资源只能是一个线程,该线程必须运行完,其他需要等待,可用synchronized关键字在资源方法上加入,也可以在线程上加入synchronized同步块;
死锁:两个线程循环依赖于一对同步对象时发生死锁。