----------------------android培训、java 培训、期待与您交流! ----------------------
进程(Process)指操作系统中一个独立运行的程序.
线程(Thread)指同一个程序(进程)内部每个单独执行的流程。
多线程程序主要的优势有两个:
1、提高界面程序响应速度
2、充分利用系统资源
线程的生命周期中包含如下阶段:
1、新建状态(New)
该状态指线程已经初始化完成,但是还没有启动。具体点说,也就是线程对象已经创建,准备工作已经完成。
2、运行状态(Run)
运行状态是指线程的正常执行状态,处于该状态的线程在CPU内部执行程序,也就是线程正常运行时的状态。
3、阻塞状态(Block)
阻塞状态指线程处于执行状态,但是由于没有获得CPU的执行时间,而处于CPU外部等待线程执行的状态。
4、死亡状态(Dead)
死亡状态指线程执行结束,释放线程占用的系统资源,结束线程执行的状态。
线程的实现方式:
1、继承Thread类
子类覆盖父类中的run 方法,将线程运行的代码存放在run中。
建立子类对象的同时线程也被创建。
通过调用start 方法开启线程。
2、实现Runnable接口
子类覆盖接口中的run 方法。
通过Thread类创建线程,并将实现了Runnable接口的子类对象作为参数传递给Thread类的构造函数。
Thread类对象调用start方法开启线程。
synchronized
1. synchronized 方法
通过在方法声明中加入 synchronized关键字来声明synchronized方法。如:
public synchronizedvoid accessVal(int newVal);
synchronized 方法控制对类成员变量的访问:每个类实例对应一把锁,每个 synchronized方法都必须获得调用该方法的类实例的锁方能执行,
否则所属线程阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放,此后被阻塞的线程方能获得该锁,重新进入可执行状态。
2. synchronized 块
通过 synchronized关键字来声明synchronized块。语法如下:
synchronized(syncObject){
//允许访问控制的代码
}
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。
另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非
synchronized(this)同步代码块。
三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它
synchronized(this)同步代码块的访问将被阻塞。
----------------------android培训、java 培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima