【笔记】【Java并发编程实战】1Introduction(附线程安全的代码示例)

注:本文为笔者阅读《JAVA并发编程实战》(Brian Goetz等注)一书的学习笔记,如有错漏,敬请指出。

线程安全的代码:

import net.jcip.annotations.GuardedBy;
import net.jcip.annotations.ThreadSafe;
/*
* 线程安全:加锁
*/

@ThreadSafe
public class TreadSafeDemo {
    @GuardedBy("this") private int value;
    public synchronized int getNext(){
        return value++;
    }
}

线程无处不在

即使程序没有显式地创建任何线程,框架也可能为你创造了一些线程。
每一个Java应用程序都使用线程。当JVM启动后,它创建一些线程来进行自身的常规管理(垃圾回收、终结处理),以及运行一个main函数的主线程。
Timer创建执行延迟的任务线程。(线程安全的)
servlet(线程安全的)和RMT等组件框架会创建线程池,池中线程调用组件方法。

关于 RMI(远程方法调用)

RMI使你能够调用在另一个JVM上运行的对象的方法。当你使用RMI调用一个远程方法时,这个方法的参数被打包(装配)成bytestream,穿越整个网络到达远程JVM,在那里被解包并传递给远程方法。
当RMI代码调用了你的远程对象时,这个调用发生的线程绝不是你创建的线程,因为你的对象被RMI管理的一个线程所调用。

QUESTION:RMI创建了那么多线程,同一个对象的同一个方法是不是有可能同时被调用。
ANSWER::yes

一个远程对象应该对同时发生的多个调用有所准备,并且将自己的线程安全提供给它们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值