实现多线程的方式:
继承Thread类:(Thread类源码中也实现了Runnable接口)
1. 自定义线程类继承Thread类
2. 重写 run()方法,编写线程执行体
3. 创建线程对象,调用 start()方法启动线程
实现Runnable接口:
1. 自定义线程类实现Runnable接口
2. 重写 run()方法,编写线程执行体
3. 创建线程对象,调用 start()方法启动线程
实现Callable接口
线程的五大状态:
1. 新生状态:创建线程对象Thread thread = new Thread( )
2. 就绪状态:当调用start()方法,线程立即进入就绪状态,但不代表立即调度执行
3. 运行状态:通过CPU调度进入运行状态,线程才真正执行线程体的代码块
4. 阻塞状态:当调用sleep、wait或者同步锁定时,线程进入阻塞状态,阻塞状态停止后,再次进行就绪状态,正常调度后运行
5. 死亡状态:线程中断或者结束,一旦进入死亡状态,就不能再次启动
因为Java是单继承,所以推荐用Runnable接口创建线程;避免了单继承的局限性,灵活方便,方便同一个对象被多个线程使用
线程休眠sleep()的作用:【每一个对象都有一个锁,sleep不会释放锁】
1. 模拟网络延时:放大问题的发生性,比如多个线程用同一个对象,会出现数据不安全的问题
2. 模拟倒计时
网友评论