文件名称:线程死锁-devexpress中gridcontrol使用技巧总结-详解(图文并茂)
文件大小:4.48MB
文件格式:PDF
更新时间:2024-06-28 10:37:21
java 入门资料 java入门资料
3.2 线程同步举例 public class TestSync implements Runnable { Timer timer = new Timer(); public static void main(String[] args) { TestSync test = new TestSync(); Thread t1 = new Thread(test); Thread t2 = new Thread(test); t1.setName("t1"); t2.setName("t2"); t1.start(); t2.start(); } public void run() { timer.add(Thread.currentThread().getName()); } } class Timer { private static int num = 0; public synchronized void add(String name) { // 执行这个方法当前对象被锁定 // synchronized(this) {//锁定当前对象 num++; try { Thread.sleep(1); } catch (InterruptedException e) { } System.out.println(name + ",你是第" + num + "个使用timer的线程"); // } } } 运行结果: t1,你是第1个使用timer的线程 t2,你是第2个使用timer的线程 3.3 线程死锁 线程死锁就是在 cpu 中多个线程同时都想使用同一个资源,这样他们谁都想得到这资源,但都不肯放 手,所以最后谁都得不到,就这样一种耗下去,所以就出现了死锁状态。为了解决这种情况,Java 就要通 过各种机制来预防这种情况的发生。 Sleep()方法:就是在多个线程抢占资源时,让优先级较低的线程先睡一会,就是让它先暂停执行,