一、多线程的实现方法
一、通过继承Thread类
先自定义类继承Thread,重写run方法,在主线程中创建对象,开启线程start。
二、通过实现Runnable接口
先自定义类实现Runnable接口,重写run方法,在主线程中创建对象,开启线程start。
三、匿名内部类
二、关于线程方法
start(); run();
String getName(); 获得线程名字
static Thread currentThread(); 获得当前线程对象
static void sleep(long time); 阻塞当前线程,时长为time
static void yield(); 释放当前线程的时间片,使当前线程进入就绪状态
void setPriority(1~10); 设置线程优先级,提升执行概率
void setDaemon(boolean on); 设置守护线程,所有“前置”线程结束时,
守护线程也将自动结束
void join(); 等待该线程结束。
三、线程安全
一、同步锁synchronized
synchronized(){} 对于非static方法,同步锁对象就是this,对于
static方法,同步锁对象就是我们当前方法所在类的字节码对象(.class)
synchronized代码执行完后会自动让线程释放锁,且在执行过程中不可中断。
二、Lock锁
Lock lock = new ReentrantLock();通过lock()方法上锁,通过unlock()
方法解锁,ReentranLock可以中断,需要手动释放锁,不然可能会导致死锁,
一般lock()方法和unlock()方法需要配合try/catch来使用。