摘要: 1、Java JUC简介 在Java5.0提供了java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、异步IO和轻量级任务框架。提供可调的、灵活的线程池。还提供了设计用于多线程上下文中的 Collecti 阅读全文
posted @ 2019-04-19 19:15 包子的百草园 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 1、线程死锁产生的原因: 不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,这样就会造成线程的死锁问题 出现线程死锁之后,程序不会报异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续执行 死锁产生的四个必要条件 互斥使用,即当资源被一个线程使用(占有)时,别的线 阅读全文
posted @ 2019-04-19 12:32 包子的百草园 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 不考虑线程安全问题的时候单例模式的代码: 分析: 单例模式通俗来说就是要求我们在创建某一个对象的时候只能创建一个这个类的对象。在多线程的情况下,可能会有多个线程在各自的run()方法中调用public static Bank getInstance()方法创建类的对象实例,如果有一个线程再调用方法且 阅读全文
posted @ 2019-04-19 12:32 包子的百草园 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 在Java中,一般都是通过同步机制来解决线程安全问题的,在JDK 5.0之后又新增了Lock的方式来实现线程安全。所以说实现线程安全方式一共有三种方法 方式一: synchronized(同步监视器){ //需要被同步的代码(操作共享数据的代码就是需要被同步的代码) } 通过继承Thread类的方式 阅读全文
posted @ 2019-04-19 12:32 包子的百草园 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 1、通过继承Thread类的方式创建多线程(这里只是简单的代码演示创建多线程的方法) 2、通过实现Runnable接口的方式创建多线程 3、两种方式的比较: 实现Runnable接口的方式没有类的单继承性的限制性; 实现的方式更适合处理多个线程之间有共享数据的情况; 所以在开发中会优先选择实现Run 阅读全文
posted @ 2019-04-19 12:32 包子的百草园 阅读(524) 评论(0) 推荐(0) 编辑
摘要: 1、程序、进程、线程的基本概念 程序:为了完成某种任务用某一种语言编写的一组指令的集合就叫程序。程序就是一段静态的代码。 进程:进程是程序的依次执行过程,或者说是正在运行的一个程序。这是一个动态的过程,有它自身的产生运行和消亡的过程--生命周期。进程是资源分配的基本单位。 线程:进程可进一步的划分为 阅读全文
posted @ 2019-04-19 12:32 包子的百草园 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 一、问题引入:首先实现一个线程通信的实例,使用两个线程交替打印输出100以内的数字。 代码实现如下: wait()、notify()、notifyAll()三个方法的介绍: wait():某个对象调用wait()方法能让当前线程阻塞,并且当前线程还会释放所拥有的锁 调用某个对象的notify()方法 阅读全文
posted @ 2019-04-19 12:31 包子的百草园 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 在JDK5.0之后新增加了一种更强大的线程同步机制 通过显示定义同步锁来实现线程同步解决线程安全问题。同步锁使用Lock对象充当。 java.util.concurrent.locks.lock接口是控制多个线程对共享资源进行访问的工具。锁提供了对共享资源的单独访问,每一次只能有一个线程对Lock对 阅读全文
posted @ 2019-04-19 12:31 包子的百草园 阅读(674) 评论(0) 推荐(0) 编辑
摘要: 1、使用Callable接口的方式实现多线程,这是JDK5.0新增的一种创建多线程的方法 2、使用Callable接口创建多线程和使用Runnable接口创建多线程的异同 相比较Runnable接口,Callable接口的功能更加强大。 相比较Runnable接口中需要重写的run()方法,Call 阅读全文
posted @ 2019-04-19 12:31 包子的百草园 阅读(469) 评论(0) 推荐(0) 编辑