![](https://img-blog.csdnimg.cn/50ee2ba963ae4e8fa2c0c18ba0f901cc.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
IDEA的使用与多线程
程序、线程、进程
elk-zhang
Elk lost
展开
-
使用线程池的好处
一、背景 经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大 二、思路 提前创建好多个线程。放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁的创建 ...原创 2021-11-25 20:42:54 · 246 阅读 · 0 评论 -
六、实现Callable接口(JDK5.0新增线程创建方式)
一、与Runnable相比,Callable功能更强大 相比于run()方法,call()方法可以有返回值 方法可以抛出异常,被外面的操作捕获,获取异常的信息 支持泛型的返回值 需要借助Future Task类,比如获取返回结果 二、Future接口 可以对具体Runnable、Callable任务的执行结果进行取消、查询是否完成、获取结果等 FutureTask接口是Future接口唯一的实现类 FutureTask同时实现了Runnable、Callable接口。它既可以作Runna原创 2021-11-25 19:59:09 · 261 阅读 · 0 评论 -
面试题:sleep()和wait()的异同
声明位置不同 调用的范围不同 关于是否释放同步监视器原创 2021-11-23 21:52:56 · 109 阅读 · 0 评论 -
五、线程的通信
目录 例题:使用两个线程打印1~100。线程1、2交替打印 涉及到的三个方法 代码 说明 例题:使用两个线程打印1~100。线程1、2交替打印 涉及到的三个方法 wait():一旦执行此方法,当前线程就会进入阻塞状态,并释放同步监视器 notify():一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高的那个 notifyAll():一旦执行此方法,就会唤醒所有被wait的线程。 代码 class Number implements Runnab原创 2021-11-23 21:44:58 · 192 阅读 · 0 评论 -
线程同步(练习题)
目录 一、分析: 1.是否是多线程问题? 2.是否有共享数据 3.有线程安全问题嘛? 4.需要考虑如何解决线程安全问题? 二、代码实现 一、分析: 1.是否是多线程问题? 是,两个储户线程 2.是否有共享数据 有,账户(或账户余额) 3.有线程安全问题嘛? 有 4.需要考虑如何解决线程安全问题? 同步机制 --- > 3种方式 二、代码实现 class Account{ private double balance; public...原创 2021-11-23 20:26:09 · 207 阅读 · 0 评论 -
Lock(锁)
ReentrantLock synchronized和Lock的异同?原创 2021-11-23 20:01:43 · 101 阅读 · 0 评论 -
线程的死锁问题
一、死锁 不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁 出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续 二、解决方法 专门的算法、原则 尽量减少同步资源的定义 尽量避免嵌套同步 三、说明 我们使用同步时,要避免出现死锁。 /* * 演示线程的死锁问题: * * * */ public class ThreadTest { public static void main(String[] args)原创 2021-11-23 17:03:35 · 108 阅读 · 0 评论 -
四、线程的同步
目录 一、问题的提出 二、解决方式 同步机制 方式一:同步代码块 方式二:同步方法 一、问题的提出 多个线程执行的不确定性引起执行结果的不稳定 多个线程对数据的共享,会造成操作的不完整性,会破坏数据 二、解决方式 当一个线程A在操作时,其他线程不能参与进来,直到线程A操作完成之后,其他线程才可以开始操作。这种情况,即使线程A出现了阻塞,也不能被改变 同步机制 在Java中,我们通过同步机制,来解决线程安全的问题 方式一:同步代码块 synchronized (同步监视器..原创 2021-11-04 22:47:43 · 71 阅读 · 0 评论 -
三、线程的生命周期
关系图:原创 2021-11-04 21:43:41 · 72 阅读 · 0 评论 -
二、线程的创建和使用
一、java.lang.Thread Java语言的JVM允许程序运行多个线程,它通过java.lang.Thread类来体现 二、Thread类的特性 每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常把run()方法的主体称为线程体 通过该Thread对象的start()方法来启动这个线程,而非直接调用run() 三、多线程的创建 Ⅰ.方式1 —— 继承于Thread类 创建一个继承于Thread类的子类 重写Thread类的run() ---> 将此线程..原创 2021-11-02 21:15:53 · 631 阅读 · 0 评论 -
一、基本概念:程序、进程、线程
程序、进程、线程 单核CPU、多核CPU原创 2021-11-02 18:38:12 · 169 阅读 · 0 评论 -
idea中的模板(Templates)
①Setting - Editor - General - Postfix Completion ②Setting - Editor - General - Live Templates原创 2021-11-02 17:41:28 · 585 阅读 · 0 评论