- 博客(13)
- 收藏
- 关注
原创 线程同步之synchronized
为了避免临界区静态条件的发生,可以使用阻塞时的解决方案:synchronized,即俗称的对象锁,它采用互斥的方式让同一时刻至多只有一个线程能持有对象锁。注意虽然java中互斥和同步都可以采用synchronized关键字来完成,但它们还是有区别的互斥是同一时刻只能有一个线程执行执行临界区代码。同步时由于线程执行的先后,顺序不同,需要一个线程等待其它线程运行到某个点。//synchronized加在对象上package hello;import java.util.*;p
2022-01-26 08:33:37
253
原创 线程的状态
这里从javaAPI层面来描述,根据ThreadState枚举,分为六种状态NEW线程被创建但是还没有调用start方法RUNNABLE当调用了start方法之后,注意,javaAPI层面的RUNNABLE涵盖了操作系统层面的就绪状态,运行状态,和由于BIO(阻塞IO)导致的阻塞状态。TERMINATED线程运行结束BLOCKED TIMED_WAITING WAITING都是javaAPI层面对阻塞状态的细分,会在后面状态转换一节详述状态练习package hello;impo
2022-01-22 20:56:52
165
原创 线程常见方法
1线程停止建议自己写一个线程停止的方法package hello;import java.util.*;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent
2022-01-20 21:12:10
212
原创 java实现多线程的三种方法
可以继承Thread类也可以重写Runnable方法class Test extends Thread{ public void run() { }}建议使用实现Runnable,方便多个线程操作同一个对象,比如下面这个,但是这样写存在并发问题。这里只是举例说明多个线程操作同一个对象。并发问题在下面解决。package hello;import java.util.*;public class Main implements Runnable{ private int .
2022-01-18 16:49:11
270
原创 spring声明式事务管理
1在配置文件中创建事务管理器<!--组件扫描--><context:component-scan base-package="com.spring"></context:component-scan><--数据库连接池--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destory-method="close"><property na
2022-01-11 15:14:38
333
原创 jdbcTemplate操作数据库
假设数据库中有一个表格叫做book,有三个属性分别为userId,username,usatus。可以先定义一个Book类@Componentpublic class Book{ private String userId; private String userName; private String ustatus; public void setUserId(String u){ userId=u;} public void setUs
2022-01-06 16:40:48
411
原创 Template连接数据库(jdbc)
1先引入相关的jar包2在spring配置文件配置数据库连接池<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destory-method="close"><property name="url" value="jdbc:mysql:///user db"></property><property name="username" value="root">&
2022-01-06 13:07:27
536
原创 AOP操作AspectJ注解
先配置两个名称变量xmlns:context和xmlns:aop,然后添加到xsi:schemalLocation中1开启组件扫描和的代理对象的创建<!--扫描包下所有类,如果有创建类的对象的注解就创建对象--><context:component-scan base-package="com.spring.aopano"></context:component-scan><!--生成代理对象(带有@Aspect注解的类)--><aop:
2022-01-05 18:44:34
176
原创 AOP底层原理(JDK动态代理实现)
AOP底层使用动态代理有两种情况动态代理第一种有接口情况,使用JDK动态代理第二种无接口情况,使用CGKIB动态代理这里来演示第一种情况1我们先定义一个接口public interface UserDao { public int add(int a,int b); public String update(String s);}2定义接口的实现类public class UserDaoIm implements UserDao{ @Override pub
2022-01-05 11:24:49
231
1
原创 IOC基于注解创建对象和注入属性与完全注解开发
1基于注解创建对象Spring针对Bean管理中船舰对象提供的注解@Component @Service @Controller @Repository第一步引入依赖引入spring-aop-(版本).RELEASE.jar第二步开启组件扫描<!--引入名称空间context--><!--开启组件扫描--><context:component-scan base-package="com.spring"></context:compon
2022-01-04 16:20:04
214
原创 bean的生命周期
1通过构造器创建bean实例(无参构造方法)2为bean的属性设置值和对其它bean的引用(调用set方法)3把bean实例传递给bean后置处理器的方法4调用bean的初始化方法5把bean实例传递给bean的后置处理器方法6bean可以使用了7当容器关闭的时候,调用bean的销毁方法添加后置处理器public class MyBeanPost implements BeanPostProcessor{ public Object postProcessBefo.
2022-01-03 16:11:59
214
原创 ApplicationContext和BeanFactory以及bean的作用域
实用的Bean工厂ApplicationContext和BeanFactory的介绍:ApplicationContext的中文意思是“应用前后关系”,它继承自BeanFactory接口,除了包含BeanFactory的所有功能之外,在国际化支持等方面进行了良好的支持,被推荐为javaEE应用之首选,可应用在javaAPP和javaWeb中。常用的实现类有ClassPathXmlApplicationContext,FileSystemXmlApplicationContext和XmlWebAppl
2022-01-02 10:53:28
732
原创 Spring之普通bean与工厂bean
Spring中有两种类型的bean,一种是普通bean,另一种是工厂bean(FactoryBean)。1普通bean先定义一个类package com.spring.Book;class Book{ private String bname; public void setBname(String bname){ this.bname=bname;} public void testBook(){ System.out.prin..
2022-01-02 09:25:37
331
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人