线程:
1.线程的概念
*程序里面不同的执行路径,每一个执行路径称为一个线程
*对于单cpu来讲,某一具体的时刻,只会有一个线程在运行,但是CPU的速度非常快,表面上看起来是许多个线程并行执行
2.java中线程的创建与启动
*两种实现线程的方式:继承Thread,实现Runnable接口
*线程的启动:start.启动线程,运行线程的run方法,run方法运行完线程就结束(注意,start只在Thread里面有,start不同于run)
*注意一个Thread对象,只能一次调用start方法
*Thread与Runnable的区别:1:Runnable是接口,比Thread灵活(因为java只能单继承,可以同时实现许多接口);2.一个Runnable对象可以启动许多个线程,线程之间共享对象(Thread不能共享对象)
3.线程的状态:new ,可运行,运行中,阻塞,死亡
4.线程的调度
*Thread.sleep,使该线程睡眠
*join:线程合并(结果类似与方法调用)
*yield:线程让出当前CPU,留给其他线程运行
*线程优先级:setPriority设置线程优先级
*后台线程:setDaemon,必须在线程运行前设置为后台线程.当所有的前台线程都结束了,后台线程自动结束
*线程可以指定名字,取得当前线程的方法Thread.currentThread();
5.线程同步
*synchronized:同一时刻,只会有一个线程执行synchronized代码块
6.线程间通讯
*wait(),notify(),notifyAll是Object类中定义的方法
*wait():使得运行该代码的线程进入对象的等待池进行等待,线程进入阻塞状态,wait的线程一直阻塞,指导其他线程调用该对象的notify方法唤醒它。
*notify():唤醒对象等待池中的一个线程,使得被唤醒的线程进入可运行状态,如果等待池中没有线程,notify什么也不做。
|