创建线程的第二种方式
实现接口Runnable 重写run方法
创建线程的第三种方式
java.util.concurrent下的Callable重写call()方法
java.util.concurrent.FutureTask
创建线程类对象
获取返回值
线程的四种生命周期
线程的优先级1-10
default为5,优先级越高,越有概率先抢占cpu,越可能先死亡
setPriority(int) 设置线程优先级
getPriority()获取线程优先级
设置线程为守护线程
isDaemon(true);
必须写在线程启动之前 否则当前执行线程出现IllegalThreadStateException
给用户线程提供服务
当正在运行的线程都是守护线程时,Java虚拟机退出。
线程调度的方法
Thread. sleep() 在指定的毫秒数内让指定的线程休眠
interrupt() 中断线程的当前状态;
Thread. yield()结束运行状态 回到就绪状态 让出cpu的时间切片
join() a线程等待b线程 在a线程 中调用b.join()方法
多线程时对同一对象进行操作时,出现并发问题
怎么实现线程的同步
给多线程要操作的同一对象的代码进行加锁synchronized
一个方法的代码都需要同步,同时使用的锁对象为同一个this,可以将方法声明为同步方法
语法: 访问修饰符 synchronized 返回值类型 方法名(参数){代码块;}
jdk5:Lock对象:作为锁对象 保证多个线程使用的为同一个Lock对象
void lock()获取锁
void unlock()释放锁
两个方法间为加锁的内容