一些常用方法
run():重写Threadrun方法,将要执行的操作写在代码中
public void run() {}
start():启动线程,并且调用run方法
对象名.start();
currentThread():返回正在执行的线程
getName():获取当前线程的名字
Thread.currentThread().getName();//获取当前执行的线程的名字
setName():设置当前线程的名字
对象名.setName(“线程一”);
Thread.currentThread().setName(“主线程”);//获取当前执行的线程的名字
yiled();释放当前线程,线程让步,这一次线程我不执行了,等下次cpu分配
join();线程a中调用b的join()方法,a会暂时停止,等待b执行完毕在执行,这个a线程也包括主线程,在主线程中调用b线程。
sleep(Loog millis):睡眠多长时间,ms,需要写异常try-catch
isAlive();判断线程是否还存活,是否已经停止或者执行完毕
System.out.println(对象名.isAlive());//false,true
wait():线程阻塞,只能调用在同步代码块,方法中,不能在lock中
notify():唤醒一个线程阻塞wait,只能调用在同步代码块,方法中
nitifyAll():唤醒所有线程阻塞wait,只能调用在同步代码块,方法中
wait,notify,notifyall:必须跟同一个synchronized锁的对象一致,且定义在object中。
this.wait();
this.notify();
object.wait();
sleep(); 和wait():区别:
都能阻塞线程
sleep方法声明在Thead类,wait方法声明在object类。
sleep任何需要的地方,wait只在同步代码块,方法中。
sleep不会释放锁,wait会释放锁。