手记

Java多线程学习笔记(常用方法和关键字)

Java多线程常用方法和关键字(自己容易忘记的和弄混的)
1.Thread类常用方法:
Thread MyThread = new Thread(mt,"线程名");

-
//sleep()使该线程进入阻塞状态,本身不会释放锁
MyThread .sleep(millis);//毫秒数
MyThread .sleep(millis, nanos);//毫秒数+纳秒数

MyThread .yield()//放弃cpu使用权利,使该线程进入就绪状态
MyThread.getState();//获得线程状态
MyThread.currentThread();//获得正在执行的线程对象MyThread
MyThread.join();//等待该线程结束,调用该线程(MyThread)的该方法(.join())的线程(比如主线程)才能继续执行
MyThread.setDaemon(on);//设置该线程为守护线程
MyThread.isDaemon();//判断是否守护线程

2.非Thread类的常用方法和关键字

-
synchronized关键字

//代表调用该代码块的线程获取obj的锁
synchronized(obj){
    ...
}
//代表调用该代码块的线程获取method方法的锁
void synchronized method(){
    ...
}

obj.wait():
该方法在synchronized(obj)代码块中使用(synchronized(obj)中的obj和obj.wait()中的obj是同一个),调用obj对象的 wait() 方法导致调用该方法的线程阻塞,该线程被放入wait set, obj对象同步锁被该线程释放。等待其他线程将其唤醒带就绪状态。
notifyAll():
该方法在同样在synchronized(obj)代码块中使用,唤醒因为wait()方法被放入wait set的所有线程,使其变为就绪状态
notify():
同样在synchronized(obj)代码块中使用,随机唤醒一个因为wait()方法被放入wait set的所有线程,使其变为就绪状态。

退出线程:
volatile boolean keepRunning=true;//在线程内部设置退出旗标,
while(keepRunning){
......//需要线程重复处理的内容
}
在线程外将keepRunning = false,则内部线程会处理完成之后结束

0人推荐
随时随地看视频
慕课网APP