Java线程基础(Thread类)
使用线程技术多半是为了并发处理效果,单核通过CPU调度模拟多任务。
?
一 基础
??? 实现1 :继承java.lang.Thread类,重写run()方法实现线程任务。
?
?
?? ?实现2:实现Runnable接口,重写run()方法实现线程任务
???
?
?? 最基础的,没啥大价值。提一下,主线程调用线程类的start()方法线程才能启动,期间Java虚拟机做了必要的准备工作。直接调用线程类的run()方法,相当于在主线程中进行方法调用。和线程没啥关系。
?
?? 两种实现的关系相当下面:
?
分析?:
1)设置了thread为后台线程,所有只要main线程执行结束,thread线程也会被销毁,程序退出。
2)main线程通过 Thread.yield(); 暂停,以供thread线程执行,Thread能执行多久看系统调度分配。每次输出基本不同。
3)注释掉的 thread.join(); 可以等待thread线程执行完。
?
三 一种停止循环任务的策略
?? 线程时常用于执行循环任务,直到程序发出结束通知。为防止线程在标志位改变时正在休眠,不能立即结束退出,一般采用设置标志位和InterruptedException 一起使用的方案。
?
?
?六 可暂停的线程
?做了个可暂停的线程,某些场景比较有用。
?
?