程序进程线程的概念:
程序:是为完成特定任务,用某种语言编写的一组指令的集合.即指一段静态的代码.静态对象
进程:是程序的一次执行的过程,或正在运行的一个程序.动态的过程.她有自身的产生.存在.和消亡的过程,是动态的
线程:进程可进一步细化为线程,是一个程序内部的一条执行路径
若一个进程可同时执行多个线程,就是正吃多线程的
thread的常用方法:
1. start() 启动线程,并执行相应的run()方法
2. run() 子线程要执行的代码放在run()方法中
3. currentThread() 静态的,调取当前的线程
4. getName() 设置此线程的名字
5. setName() 设置此线程的名字
6. yield() 调用此方法的线程释放当前CPU的执行权
7. join() 在A线程中调用B线程的jion方法,表示:当执行到此方法,A线程停止,直至B线程完毕,A线程再接着jion()之后的代码执行
8. isAlive() 判断当前线程是否还存活
9. sleep(long L) 显示的让当前线程睡眠L毫秒
多线程的优点:
1提高应用程序的响应,对图像化界面更有意义.可增强用户的体验
2提高计算机系统cpu的利用率
3改善程序结构,将即长又复杂的进程分为多个线程,独立运行,利于理解和修改
多线程的安全问题
当多条语句在操作同一个线程共享数据时,一个线程对多条语句执行了一部分,还没有执行完,另一个线程参与进来.导致共享数据的错误,.
(一个线程在操作共享数据的过程,未执行完毕的情况下,另外的线程参与进来,导致共享数据出现问题)
解决办法:对多条操作共享数据的语句,只能让一个线程都执行完,在执行过程中其他线程不可以参与执行
JAVA对于多线程的安全问题提供了专业的解决方式:
一:同步代码块
1 synchronized(同步监视器(对象)){
//需要被同步的代码块
}
同步监视器:有一个类的对象来充当.那个线程获取此监视器,会就执行.俗称"锁"
2 synchronize还可以放在方法声明中,表示整个方法为同步方法
例如:
public synchronize void show(String name){}