首页 > 代码库 > 线程(三)
线程(三)
一、wait和sleep区别?
1.wait可以指定也可以不指定。sleep必须指定时间。
2.在同步中时,对cpu的执行权和锁的处理不同。它们都能将线程处于冻结状态。
wait:释放执行权,释放锁。
sleep:释放执行权,不释放锁。
二、线程的结束
1.调用该线程的stop()方法结束线程。容易导致不可预知的错误不推荐。
2.run()方法执行结束,线程正常结束,常用标志位来结束线程。
例:用标志位来结束线程
package com.test2;class StopThread1 implements Runnable{ private boolean flag=true; public void run() { while(flag) { System.out.println(Thread.currentThread().getName()+"...."); } } public void setFlag() { flag=false; }}public class Demo2 { public static void main(String[] args) { StopThread1 st=new StopThread1(); Thread t1=new Thread (st); t1.start(); int num=1; for(;;) { if(++num==10) { st.setFlag(); break; } System.out.println("main"+num); } System.out.println("over"); }}
3.使用interrupt来中断线程。
* Interrupt //可以将线程从冻结状态强制恢复到运行状态中来,让cpu具备执行资格
* 但是强制动作会发生中断异常,记得要处理
线程(三)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。