Java Basic5(反射,多线程)

一.reflection

详见C:\Users\HW91139\workspace\JavaTask\src\Reflection\TestReflect.java

二.代理

静态代理:

耦合度太高,调用类每次都必须包含被调用类作为成员变量来调用被调用类的方法。

动态代理:

Jdk只能代理接口。代理的类,里面有很多私有方法,但真正提供服务的只有少数,使用接口则可以屏蔽掉不用的那些,大大简化。

三.Spring

IOC:反射

AOP:面向切面编程

 

四、多线程

1.继承Thread类

public class Demo extends Thread{
    @Override
    public void run(){
        System.out.println("Hello World");
    }
}


2.实现Runnable接口

public class Demo implements Runnable{
    @Overide
    public void runn(){
        System.out.println("Hello World");
    }
}


一般采用第二种方法,因为java中是单继承的。

public static void main(String[] args){
    Thread thread = new Thread(new Demo());
    thread.start();
}


线程有同步问题,尽量避免全局变量,如果用了那么加锁:

public class Demo32 implements Runnable{
    private int counter;
    @Override
    public void run(){
        synchronized(this){
            counter++;
            System.out.println(Thread.currentThread().getName() + ": current counter is " + counter);
        }
    }

    public static void main(String[] args){
        Demo32 demo = new Demo32();
        new Thread(demo).start();
        new Thread(demo).start();
        new Thread(demo).start();
    }
}


上方法不建议使用,毕竟使用多线程是为了提高效率用的。

当不一样的实例时,则锁基本不生效。除非锁换成类锁(类名.class)

线程间通信:

当单线程读文件,多线程写入,如何保证内存能很好使用?使用arrayBlockingQueue

Private volatile int value中volatile对这个变量每次申请取值时都要更新到最新。




备注:本系列仅用于个人笔记所以写的很不完善,请多多包涵~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值