摘要: 线程池(熟悉) 1. Callable接口 <1> 从Java5开始,新增加创建线程的第三种方式:实现java.util.concurrent.Callable接口 <2> 常用方法 V call() 计算结果并返回 <3> 代码示例 (ThreadCallableTest.java) 5 publ 阅读全文
posted @ 2021-06-17 16:52 Jasper2003 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 1. 常用方法 void wait() 用于使得线程进入等待状态,直到其他线程调用notify()或notifyAll()方法 void wait(long timeout) 用于进入等待状态,直到其他线程调用方法,或参数指定的毫秒数已经过去为止 void notify() 用于唤醒等待的单个线程 阅读全文
posted @ 2021-06-17 16:31 Jasper2003 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 1. 基本概念 <1> 从Java5中,开始提供了强大的线程同步机制 > 使用显式定义的同步锁对象来实现 <2> java.util.concurrent.locks.Lock接口: 控制多个线程对共享资源进行访问的工具 <3> 该接口的主要实现类是 ReentrantLock类,该类拥有与sync 阅读全文
posted @ 2021-06-17 16:23 Jasper2003 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 线程一执行的代码: public void run() { synchronized(a) { // 持有对象锁a,等待对象锁b synchronized(b) { 编写锁定的代码 } } } 线程二执行的代码: public void run() { synchronized(b) { // 持有 阅读全文
posted @ 2021-06-17 15:56 Jasper2003 阅读(24) 评论(0) 推荐(0) 编辑
摘要: <1> StringBuffer类是线程安全的类,但StringBuilder类不是线程安全的类 <2> Vector类 和 Hashtable类是线程安全的类,但ArrayList类 和 HashMap类 不是线程安全的类 <3> Collections.synchronizedList() 和 阅读全文
posted @ 2021-06-17 15:49 Jasper2003 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 1.静态方法的锁定 <1> 当我们对一个静态方法加锁,如: public synchronized static void xxx() {...} 那么,该方法锁的对象是类对象。 每个类都有唯一的一个类对象。 获取类对象的方式:类名.class <2> 静态方法与非静态方法,同时使用了synchro 阅读全文
posted @ 2021-06-17 15:43 Jasper2003 阅读(427) 评论(0) 推荐(1) 编辑
摘要: 线程同步机制(重点) 1. 基本概念 <1> 当多个线程同时访问同一种共享资源时,可能会造成数据的覆盖等不一致性问题, 此时就需要对线程之间进行通信和协调,该机制就叫做线程的同步机制。 <2> 多个线程并发读写同一个临界资源时,会发生线程并发安全问题 <3> 异步操作:多线程并发的操作,各自独立运行 阅读全文
posted @ 2021-06-17 09:53 Jasper2003 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 1. 常用方法 static void yield() 当前线程让出处理器(离开Running状态),使当前线程进入Runnable状态等待 static void sleep(times) 使当前线程从Running放弃处理器进入Block状态,休眠times毫秒,再返回到Runnable。 如果 阅读全文
posted @ 2021-06-17 09:13 Jasper2003 阅读(32) 评论(0) 推荐(0) 编辑