成都中小企业网站建设哪家公司好,途牛网站建设方案,怎么自己做单页网站,镇江网站建设找 思创线程生命周期 synchronized synchronized会自动释放锁 synchronized同步代码块 synchronized后面括号里obj是锁对象(保证唯一)#xff1b;static修饰的obj对象是自定义MyThread线程类的静态成员变量#xff0c;该自定义线程类所有实例共享保证锁对象唯一性#xff1b;另一…线程生命周期 synchronized synchronized会自动释放锁 synchronized同步代码块 synchronized后面括号里obj是锁对象(保证唯一)static修饰的obj对象是自定义MyThread线程类的静态成员变量该自定义线程类所有实例共享保证锁对象唯一性另一种保证锁对象唯一自定义线程类的字节码对象例如MyThread.class 备注 synchronized同步代码块的锁对象可以自己指定 synchronized同步方法 synchronized同步方法上时锁对象通过系统定义而不能自定义指定 同步方法系统定义锁对象两种方式 1.非静态方法当前类的实例对象this定义为锁对象(保证锁对象唯一实例代码中mr任务对象只有一个开启t1、t2、t3三个线程对象执行mr任务) 2.静态方法当前类的类字节码对象为锁对象(static修饰的成员方法类的所有实例共享类的字节码对象只有一个)类字节码对象类.class synchronized的死锁 锁里面嵌套锁可能导致死锁线程获取CPU执行权具有随机性多线程都是交替获取CPU执行权因此锁与锁嵌套可能导致死锁 lock锁 lock锁需要手动unlock方法释放锁 代码中lock锁unlock方法释放时放在finally里面保证锁正常释放(即使遇到break) 多线程等待唤醒机制
线程常用方法
1. 手动实现多线程的等待唤醒机制(食客与厨师为例) 一、多线程等待唤醒机制_锁对象 二、多线程等待唤醒机制_消费者 三、多线程等待唤醒机制_生产者 四、多线程等待唤醒机制 2. 阻塞队列实现多线程的等待唤醒机制(食客与厨师为例) 创建阻塞队列并且自定义长度ArrayBlockingQueue queue new ArrayBlockingQueue(数值) 备注ArrayBlockingQueue类似单列集合List