# thread **Repository Path**: vectordyl/thread ## Basic Information - **Project Name**: thread - **Description**: 多线程学习 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-22 - **Last Updated**: 2024-04-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Java多线程学习 ### 代码备注 - 模拟多线程并发问题 ThreadTest01 - synchronized解决并发 ThreadTest02 - 直接使用线程安全的集合不使用锁能否解决多线程问题 ThreadTest03 不能 - 模拟死锁情况 ThreadTest04 - 第三种创建线程的方式 ThreadTest05 - 第四种创建线程的方式 ThreadTest06 - 线程池 ThreadTest07 - 其他同步锁。。。 - 其他创建线程的方式 - juc包的其他类 - http异步执行的方法 ### 解决线程线程并发问题思路 - 线程同步,即不让线程并发执行 - 异步编程,即多线程并发 ### 创建线程对象的不同姿势 #### java.lang包下的Thread对象 - 直接实现Thread对象 - 先实现Runable对象,在创建Thread对象通过静态代理的方式启动线程 #### JUC包下 - java.util.concurrent包下FutureTask对象,注意FutureTask不是线程对象. - java.util.concurrent包下的CompletableFuture对象 ### FutureTask的执行原理 ### CompletableFuture 执行原理 completablefuture对象自带线程池 ### 线程池 ThreadPoolExecutor ### synchronized关键字 关键字锁住的必须是多线程的共享对象。如前面的线程类静态代理的同一个对象,使用this就可以锁住。 synchronized防止位置 - 方法上,锁住的是当前类的实列对象 - 代码块上,需要在括号中指定对象。可以是this(当前对象),也可以是共享变量,需要在线程对象外部传递 - 类上面或者静态方法上面。类锁只有一把,无论实列化多少个对象