多线程之 死锁与定时器
一. 死锁
死锁:同步代码时,因为获取锁问题,导致程序无限等待。
线程A等待线程B释放 1锁
线程B等待线程A释放 2锁
线程A和线程B都等对方释放,没人释放,就会陷入无限等待。 死锁
死锁形成条件:
嵌套同步代码块
两个同步代码块,锁对象不相同
解决死锁:
不要嵌套同步代码块
活用 锁对象.wait()
二. 定时器
定时执行某个任务:延迟一段时间执行某个任务
立刻执行某个任务
public static void main(String[] args) throws InterruptedException {
//1、创建一个定时器
Timer timer = new Timer();
//2、绑定一个任务
//TimerTask 定时器任务
//参数二:延迟多少毫秒执行 1000
//参数三:执行周期 每隔X毫秒值就执行一次
timer.schedule(new TimerTask() {
//任务
@Override
public void run() {
System.out.println("这是我的定时器");
}
},1000,2000);
Thread.sleep(5000);
timer.cancel();//取消某个正在运行的定时器
}
public static void main(String[] args) throws InterruptedException {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println(new Date().toLocaleString());
}
},0,1000);
Thread.sleep(10000);
timer.cancel();
}
请给努力中的自己点个赞哦!
每天进步一点点`~~~~~