java中的并发

今天突然看到synchronized关键字,想到了并发,就查看了java的api以及stackoverflow的一些资料,为方便记忆,总结如下:

1.synchronized关键字是控制不同线程对同一对象的访问的,对不同对象的访问根本不需要设置这个关键字

2.wati和notify,notifyall关键字一定是出现在synchronized关键字修饰的代码块或函数中,用来做线程同步(类似操作系统中的进程同步的原语操作),至于为什么一定是在synchronized关键字修饰的代码块或函数中,则是由线程同步的要求所规定,它们就是访问同一对象的,只要是不同线程访问同一对象就一定要加synchronized关键字

3.非static代码块和函数synchronized上锁是对这一对象的所有非static的synchronized代码块和函数上锁,同一时刻只能有一个线程访问这些非static的synchronized代码块和函数

4.static的代码块和函数如果被synchronized修饰,则表示这个类的class对象被上锁,就是所有static和synchronized一起修饰的上锁

5.   3和4中所描述的两种情况毫无关系,换句话说就是一个线程锁static的,另一个线程锁非static的情况下,它们各自执行各自的,互相不干扰

6.函数中定义的变量是每个线程在内存中有自己的一份,不用考虑同步问题。而对象的成员变量则需要考虑同步问题,所有线程共享一份

7.我们的apache服务器中的servlet实例都是单例的,自然就涉及到同步问题,但是在doGet等方法中定义的变量不需要考虑同步问题,且我们这些方法也没有synchronized修饰,说明同一时刻我们也没有上锁,允许多个线程同时访问,这样服务器并发性就好了


以上为自己观点,如有不正确,欢迎拍砖!

另:发现apache的并发性在访问量瞬时很大的情况下并没有nginx的并发性好,只是一个结论,有时间从结构上再分析原因

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值