关闭
当前搜索:

java并发编程day08

5.4 阻塞和可中断的方法 线程可能会因为几种原因被阻塞或暂停: - 等待I/O操作结束 - 等待获得一个锁 - 等待从Thread.sleep中唤醒 - 等待另一个线程的计算结果 当一个线程阻塞时,他通常被挂起,并被设置为线程阻塞的某个状态。 一个阻塞的操作和一个普通的操作之间的差别仅仅在于:被阻塞的线程必须要等待一个事件的发生才能继续进行,并且这个事件是超越它自己控制的,因为需要...
阅读(75) 评论(0)

java并发编程day07

5.3 阻塞队列和生产者-消费者模式 阻塞队列blockingqueue提供了可阻塞的put和take方法,他们与可定时的offer和pull是等价的。 如果Queue已经满了,put方法会被阻塞直到有空间可用;如果Queue是空的,那么take方法会被 阻塞,直到有元素可用。Queue的长度可以有限,也可以无限;无限的Queue永远不会满,所以它的 put方法永远不会阻塞。 阻塞队列支...
阅读(52) 评论(0)

java并发编程day06

第五章 构建快5.1 同步容器同步容器分为两部分:一个是vector和hashtable,早期是JDK的一部分;另一个是他们的同系容器,在后面被加入到同步封装类,这些类是由Collections.synchronizedXXX工厂方法提供的,这些类通过封装它们的状态,并对每一个公共的方法进行同步实现线程安全,这样一次只有一个线程能访问到容器的状态5.1.1 同步容器中出现的问题同步块都是线程安全的,...
阅读(71) 评论(0)

java并发编程day05

4.4向已有的线程安全类添加功能 缺少即添加操作(检查再运行)这种操作必须是原子的 添加一个新原子的最安全的方式是 修改原始的类以支持期望的操作。 另一个方法是扩展这个类。 如下代码所示: @TreadSafe public class BetterVector extends Vector { public synchronized boolean putIfAbsent(E...
阅读(77) 评论(0)

java并发编程笔记day04

4.3 委托线程安全4.3.1 范例:试用委托的机动车追踪器public class DelegatingVehicleTracker { private final ConcurrentMap locations; private final Map unmodifiableMap; public Delegating...
阅读(55) 评论(0)

java并发编程笔记day3

第四章 组合对象4.1 设计线程安全的类在没有进行全局检查的情况下,封装能保证线程的安全性。 设计线程安全类的过程包括一下三个基本要素:1确认对象的状态由哪些变量构成的 2 确定限制状态变量的不变约束 3 制定一个管理并发访问对象状态的策略 同步策略定义了对象如何协调对其状态的访问,并且不会违反它的不变约束或后验条。 4.1.1 收集同步需求维护类的线程安全就意味着确保在并发访问的情况下,保护它的不...
阅读(85) 评论(0)

java并发编程笔记day2

第三章3.3.2 栈限制栈限制是线程限制的一种特例,只能通过本地变量才可以触及对象。本地变量使对象更容易被限制在线程本地中,本地变量本身就限制在执行线程中,存在于执行线程。其他线程无法访问这个栈。 如下面代码所示,我们的numPairs是基本类型的本地变量,无法利用栈限制,由于无法获得基本类似的引用,所以语言语义确保了基本类型本地变量总是线程封闭的。 维护对象引用的栈限制,我们就需要确定引用的对象没...
阅读(72) 评论(0)

java并发编程笔记day1

第三章 共享对象3.1 可见性 在没有同步的情况下共享变量,可能会导致一直循环,并且有可能发生重排序,打印结果为0。 public class NoVisibility { private static boolean ready; private static int number; private static class ReaderThread extends Thre...
阅读(92) 评论(1)

Spring框架1-容器功能

核心容器(Core)这是Spring框架最基础的部分,它提供了依赖注入(Dependency Injection)特征来实现容器对Bean的管理。这里最基本的概念是BeanFactory,它是任何Spring应用的核心。BeanFactory是工厂模式的一个实现,它使用IoC将应用配置和依赖说明从实际的应用代码中分离出来。 spring的容器中注入各个实例,使得他们在同一个空间,方便。而且是通过x...
阅读(982) 评论(0)

javaee:log4j的使用

1、Log4j简介作用: 1、跟踪代码的运行轨迹。 2、输出调试信息三大组成:1、Logger类-生成日志。 2、Appender类-定义日志输出的目的地。 3、Layout类-指定日志输出的格式。2、Logger组件日志共分为5种级别(ON开,OFF关这两个不计算在内),从高到底(从严重到轻微)排序为: FATAL—严重的错误,可能会导致程序不能正常运行. 类似System.exit...
阅读(401) 评论(0)

mysql:day7--开源数据库连接池(DBCP/C3P0)、DBUTILS及ext-dbutils扩展包)

DBCP使用dbcp第三方包要导入 三个jar包 使用很简单:1、纯java方式拿dbcp连接池@Test public void testDbcpDemo() throws SQLException{ BasicDataSource pool = new BasicDataSource(); pool.setUsername("root");...
阅读(1042) 评论(0)

mysql:day6--将数据导出到xls表格

知识点1:数据库元数据操作元数据:描述数据的诗句获取数据库的元信息站在数据库的角度操作 通过DatabaseMetaData dm = con.getMetaData();动态获取数据库名: 相当于执行: show databases;ResultSet rs = dm.getCatalogs();//相当于执行: show databases;知道了数据名,动态获取表名 Resu...
阅读(270) 评论(0)

mysql:day5-详解多线程状态下的事务(连接池、动态代理技术)

问题:如下面代码: cn.hncu.demo.TxMultiThreadDemopackage cn.hncu.demo;import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement;import cn.hncu.pool.ConnsFactory; import cn.hncu.util.C...
阅读(950) 评论(0)

mysql:day4--存储过程、事务处理

小知识点:主键自动增长列:加一个AUTO_INCREMENTunique字段唯一性约束CREATE TABLE test1 ( id INT AUTO_INCREMENT PRIMARY KEY,/*要int类型的才能自动增长*/ nm VARCHAR(32) UNIQUE ); INSERT INTO test1 VALUES (1,'小月月'); INSERT INTO test1(n...
阅读(1045) 评论(0)

mysql:day3--java访问数据库、CASE...WHEN、无关/相关子查询、表与表之间的关系

java访问数据库分为四步:1、加载连接器高级版本的mysql可以省略这一步Class.forName("com.mysql.jdbc.Driver");2、建立连接我们最好在建立连接的时候指定编码,这样可以保证执行的时候不会因此乱码。当然也可以采用默认编码方式连接,不过不推荐。//String url = "jdbc:mysql://127.0.0.1:3306/aa"; String url =...
阅读(392) 评论(2)
102条 共7页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:56187次
    • 积分:1545
    • 等级:
    • 排名:千里之外
    • 原创:99篇
    • 转载:1篇
    • 译文:0篇
    • 评论:4条
    最新评论