thread
线程:是程序执行的最小单位
进程:是cpu分配资源的最小单位
线程的声明:
①extends Thread的类,然后用对象调用start()方法。
②implement Runnable接口,不能直接调用start()(没有)方法去开启线程,必须将该类对象封装成Thread类,new Thread(“实现类对象”)。
用法:①执行十分耗时的操作②每个线程中一定是能够独立运行的操作,即和其他的线程没有依赖。③线程切换时必须执行完一条语句,才能切换。
l 多个线程采用争夺cpu轮换算法(时间片轮转)切换线程,各个线程优先级相同。
线程五态图:
关键词synchronized
用于控制线程同步,可以修饰类,修饰方法,修饰代码块。
格式:synchronized(锁){ 代码块}
锁:一定是引用类型,是多个线程共有的对象或变量
一般情况下,选用类镜像(.class)。
意义:保证被修饰的代码一次性执行完,不能被其他线程所执行或调用。
synchronized修饰方法时,锁一定是this。
l 方法简介:
Thread.sleep();//代码所在线程沉睡
Thread.currentThread().getName();//获得代码所在线程的名字
Thread.stop();//已经过时,调用可能会出错,不安全
t.join();//所在代码的线程等待t线程执行完后再执行该线程。
wait()是object类的非静态方法,但是普通对象却不能用,只有锁对象才能调用wait()方法。