高手,您好: 
    我在写一个IM系统,下面是我的部分代码:
    
    求高手点拨:
    我的上述代码的第66行代码的“对象锁”,用的对不对...?
    弟我想在C端,达到:
    让C端的诸多功能,在面向C端的Socket对象so3,进行:
    “协调诸多功能中的写出方法同步”的“排队向so3对象进行”“数据写入”的功能操作...
    请问高手,为什么在我用了这个结构的代码实施之后,出现了:
    整个项目中,有:
    每次运行,都会在上述的第66行的代码位置,报出“空指针”的异常...?
    希望高手点拨我两个问题:
    1.我用的对象锁,是否能够达到预期的效果在没有前面的Socket对象的“创建连接问题”出现的话..
    应该能够达到我的预期目标:
    “协调每一个写出方法同步”的“排队写出数据”的功能,的实现吧.
    2.我用的这个代码实施方法,如果在上述第一个需求能够达到的基础上,为什么会有:
    报出“空指针”的错误的问题...?
    除了Socket对象的创建连接问题之外,还有什么问题可能导致这个异常的出现...?
    谢谢高手!!
    一百分奉上!!
                                                          一位日日夜夜向着理想奔跑的筑梦者
                                                         2013年11月13日下午18点15分Java SESynchronized关键字Java线程同步Java对象锁Java锁机制

解决方案 »

  1.   

    so3 是什么对象?你这是server端么?so3是接收到的cli发来的socket对象么?
    对象命名完全没有规律看不懂。我的上述代码的第66行代码的“对象锁”,用的对不对...?
    你这里用锁的目的是什么?“协调诸多功能中的写出方法同步”的“排队向so3对象进行”“数据写入”的功能操作...
    你的思路是什么?多个线程向同一个socket写响应么?
      

  2.   

    你用的是对的,但是那两个sync{}block可以合为一个。
      

  3.   

    须等待哥,弟我对我的问题做一下补充:
    1.这是我的Client端.
    2.我用锁的目的是:
    让我的C端的诸多可能为用户选择的“功能”,面向一个Socket水管,进行“协调动作”:
    一个功能一个功能地进行我的Socket水管的使用,让我的数据,能够有条不紊地向S端进行发出.
    希望能够得到诸位高手的再次点拨:
        我的上面的代码,是否能够达到我的目的:
        “协调每一个写出方法同步”的“排队写出数据”,也就是:“我的C端的多个线程在同一个时间点上调用write()方法向一个Socket水管中写数据的时候,能够让我的每一个线程,有序,依次执行上面的“写入数据”的操作...?
      

  4.   

    须等待哥,弟我对我的问题做一下补充:
    1.这是我的Client端.
    2.我用锁的目的是:
    让我的C端的诸多可能为用户选择的“功能”,面向一个Socket水管,进行“协调动作”:
    一个功能一个功能地进行我的Socket水管的使用,让我的数据,能够有条不紊地向S端进行发出.
    希望能够得到诸位高手的再次点拨:
        我的上面的代码,是否能够达到我的目的:
        “协调每一个写出方法同步”的“排队写出数据”,也就是:“我的C端的多个线程在同一个时间点上调用write()方法向一个Socket水管中写数据的时候,能够让我的每一个线程,有序,依次执行上面的“写入数据”的操作...?你的已经用synchronize同步了。就可以实现
      

  5.   

    谢谢withiter版主的提点!!
        谢谢须等待哥的相助与响应!!
        谢谢healer_kx哥的点拨!!
        谢谢shadowsick哥的指导!!
        有一日,我成功了,定当报答我的诸位老师与我的大学,CSDN!!