Java线程
线程
概念
进程是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间),比如用户点击桌面的IE浏览器,就启动了一个进程,操作系统就会为该进程分配独立的地址空间。当用户再次点击左面的IE浏览器,又启动了一个进程,操作系统将为新的进程分配新的独立的地址空间。目前操作系统都支持多进程。
线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。线程有就绪、阻塞和运行三种基本状态。
线程的特点:
进程是系统运行程序的基本单位
每一个进程都有自己独立的一块内存空间,一组系统资源
每一个进程的内部数据和状态都是完全独立的
多线程的好处
充分利用CPU的资源
简化编程模型
带来良好的用户体验
线程状态
线程同步
当两个或多个线程需要访问同一资源时,需要以某种顺序来确保该资源某一时刻只能被一个线程使用,这就是线程同步
采用线程同步来控制线程的执行有两种方式,即同步带吗方法和同步代码块。这两种方法都是用synchronized关键字实现。
通过在方法申明中加入synchronized关键字实现同步方法,其语法如下:
访问修饰符 synchronized 返回类型 方法名(参数列表){//省略方法体…}
或者
synchronized 访问修饰符 返回类型 方法名(参数列表){//省略方法体…}
在语法中:
synchronized是同步关键字
访问修饰符是指public,private等。
同步方法的缺陷
如果将一个运行时间较长的方法声明称synchronized将会影响效率