摘要: 1、线程池出现原因 以前写多线程时,用到线程的时候就创建(浪费时间);用完之后线程就消失(浪费资源)。 2、线程池主要核心原理 3、线程池代码实现 (1)创建线程池 (2)提交任务 (3)所有的任务全部执行完毕,关闭线程池 e.g //1.获取线程池对象 ExecutorService pool1 阅读全文
posted @ 2023-03-27 20:57 Linqylin 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 1、每个线程都有自己的栈。 所以,当在run()方法里创建一个变量时,不同的线程都有这个变量,且相互独立。 阅读全文
posted @ 2023-03-27 20:12 Linqylin 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 多线程的6种状态 注意:Java中没有定义运行状态,所以线程只有6种状态。因为线程抢到CPU的执行权后,就交给操作系统了,在这个运行过程中虚拟机就不用管了,所以Java没有定义运行状态。 阅读全文
posted @ 2023-03-27 19:47 Linqylin 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 生产者和消费者(等待唤醒机制) 生产者消费者模式是一个十分经典的多线程协作的模式 举例: 实现方式一: 线程的方法代码编写技巧,如run(): 步骤: (1)循环; (2)同步代码块; (3)判断共享数据是否到了末尾(到了末尾) (4)判断共享数据是否到了末尾(没到末尾,执行核心逻辑) wait() 阅读全文
posted @ 2023-03-27 19:40 Linqylin 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 1、线程的生命周期 2、线程的安全问题 因为线程在执行时,有随机性,CPU的执行权随时有可能被抢走。 解决方法:把操作共享的代码锁起来 3、同步代码块 把操作共享的代码锁起来 格式: synchronized(锁){ 操作共享数据的代码 } 特点1:锁默认打开,有一个线程进去了,锁自动关闭 特点2: 阅读全文
posted @ 2023-03-27 18:58 Linqylin 阅读(8) 评论(0) 推荐(0) 编辑
摘要: MyThread t = new MyThread(); 1、String getName() 细节: 如果没有给线程设置名字,线程也是有默认的名字的 格式:Thread-X(X序号,从0开始) 2、void setName(String name) 细节: 如果要给线程设置名字,可以用set方法进 阅读全文
posted @ 2023-03-27 18:09 Linqylin 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 方式一:继承Thread类的方式进行实现 步骤: 1、自己定义一个类继承Thread 2、重写run方法 3、创建子类的对象,并启动线程 e.g. public class MyThread extends Thread{ @Override public void run(){ //书写线程要执行 阅读全文
posted @ 2023-03-27 16:45 Linqylin 阅读(666) 评论(0) 推荐(0) 编辑
摘要: 1、概念 线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 进程:进程是程序的基本执行实体。 多线程:有了多线程,就可以让程序同时做多件事情。 多线程作用:提高效率。 多线程应用场景:软件中的耗时操作、所有的聊天软件、所有的服务器。 2、并发和并行 并发: 阅读全文
posted @ 2023-03-27 13:58 Linqylin 阅读(5) 评论(0) 推荐(0) 编辑