线程:
线程与进程:
1.一个线程是进程中的一个程序片段。进程包含多个线程。
2.如果一个进程中同时运行了多个线程,用来完成不同的工作,则称之为多线程。
3.进程是系统分配的资源单位。
4.线程是利用进程的资源,同一个进程中的线程可以共享资源。
5.线程并不是越多越好,会出现资源抢占。
调用线程的方法:
方法一:
(1)继承Thread类,重写run方法
(2)创建Thread实例,start方法
方法二:使用Runnable接口
(1)建立runnable对象,实现runnable接口中的run方法
(2)使用参数为runnable对象的构造方法来创建Thread实例
(3)start方法
推荐使用该方法,可以摆脱类继承的局限(只能继承一个父类,但是接口可以实现多个)
多线程同步的方法:
一:同步代码块:
同步代码块的声明方式:synchronized("object对象"){}。
二:同步方法:
由synchronized修饰的方法就叫同步方法。
三:volatile
为敏感变量提供一个免锁机制,相当于告诉jvm该变量是可能被其他线程更新,需要独占
四:互斥锁(jdk 1.5之后)
ReentrantLock
方法:lock() 获得锁
unlock() 释放锁
public class Ticket implements Runnable{
private int total;
Ticket(int total){
this.total=total;
}
Object mutex=new Object();
@Override
public void run() {
while (total>0){
synchronized (mutex){
total