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();//判断是否守护线程
-
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,则内部线程会处理完成之后结束
共同学习,写下你的评论
评论加载中...
作者其他优质文章