摘要: 什么是线程池? 线程池是一种多线程处理形式,处理过程中将任务提交到线程池,任务的执行交由线程池来管理。 如果每个请求都创建一个线程去处理,那么服务器的资源很快就会被耗尽,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。 为什么要使用线程池? 创建线程和销毁线程的 阅读全文
posted @ 2021-03-02 21:09 longda666 阅读(62) 评论(0) 推荐(0)
摘要: CAS(CompareAndSweep)工作方式 ​ CAS是乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。 ​ CAS 操作中包含三个操作数 —— 需要读写的内存位置(V 阅读全文
posted @ 2021-03-02 20:42 longda666 阅读(232) 评论(0) 推荐(0)
摘要: 可见性 所谓可见性,就是指一个线程改变了共享变量之后,其他线程能够立即知道这个变量被修改。我们知道在Java内存模型中,不同线程拥有自己的本地内存,而本地内存是主内存的副本。如果线程修改了本地内存而没有去更新主内存,那么就无法保证可见性。 退不出的循环 public class ThreadTest 阅读全文
posted @ 2021-03-02 20:13 longda666 阅读(88) 评论(0) 推荐(0)
摘要: 线程通信 等待: public final void wait(); public final void wait(long timeout); //必须在对obj加锁的同步代码块中,在一个线程中,调用obj.wait()时,此线程会释放其拥有的所有锁标记,同时此线程在无限期等待的状态中,释放锁,进 阅读全文
posted @ 2021-03-02 19:27 longda666 阅读(93) 评论(0) 推荐(0)
摘要: 线程安全问题 线程不安全: 当多线程并发访问临界资源时(可共享的对象),如果破坏原子操作,可能会造成数据不一致。 临界资源:共享资源(同一对象),一次仅允许一个线程使用,才可以保证其正确性。 原子操作:不可分割的多步操作,被视作一个整体,其顺序和步骤不可打乱或缺省。 同步方式(1) 同步代码块: s 阅读全文
posted @ 2021-03-02 18:29 longda666 阅读(182) 评论(0) 推荐(0)