11 2021 档案
摘要:频繁的创建和销毁线程需要花费大量时间,Java支持创建线程池,将多任务交给一组线程执行,提高执行效率。 1、创建线程池 Java标准库提供 ExecutorService 接口表示线程池,实现类有FixedThreadPool、CachedThreadPool、SingleThreadExecuto
阅读全文
摘要:1、Concurrent集合 Java标准库java.util.concurrent包提供了基于线程安全的集合。针对标准的Java集合类List、Map、Set、Deque,java.util.concurrent包也提供了对应的并发集合类。 interfacenon-thread-safethre
阅读全文
摘要:无论是synchronized机制,还是ReentrantLock加锁,实际上只有一个线程可以执行临界区代码。即读写、写读、读读、写写 两个线程之间是相互阻塞的。然而读线程之间是需要并发的,Java使用ReadWriteLock实现多个线程同时读提高并发性能。 1、ReadWriteLock imp
阅读全文
摘要:使用 synchronized修饰,表示该方法是加锁的方法。使用相同this锁的方法,在任意时刻只有一个方法会被执行,在多线程中是竞争关系。除此之外多线程还存在依赖关系。例如,一个线程须等待另一个线程返回结果后,才能继续执行。Java中提供了相应的机制。 1、synchronized、wait、no
阅读全文
摘要:Java使用多线程编程带来的问题就是,多线程同时读写共享变量,会出现数据不一致的问题。 对于语句: n = n + 1; 对变量的赋值操作,实际上对应三条指令: ILOAD // 从内存中取出变量值 IADD // 对其加1操作 ISTORE //放入变量对应的内存地址 由于多线程的并发执行,线程2
阅读全文
摘要:Java多线程基础总结线程的创建、线程状态、如何中断线程与守护线程的概念。 1、线程创建 参考Java中创建线程的方式; 2、线程暂停执行 强迫当前线程暂停一段时间, 调用Thread.sleep(time)。注意:sleep函数传入的参数是毫秒单位,并且暂停的是当前执行Thread.sleep()
阅读全文
摘要:Java中创建新线程有多种方式,一般从Thread派生一个自定义类,然后覆写run方法,或者创建Thread实例时,传入一个Runnable实例。两种方式可通过内部匿名类或者lambda语法进行简写。 1、通常写法 class MyTheard extends Thread { @Override
阅读全文