昨天在写一个聊天程序,在发送消息的时候是采用单独的一个线程,接收消息是在另一个线程中完成。

我在测试的过程中发现,有的时候当消息比较多时,比如:

当我刚刚发送完一条消息,这个时候要将我发送的消息添加到JTextPane元件中,刚好对方也发来一个消息,这个时间接收线程也将接收到的消息添加到了JTextPane元件,这就发生与线程“锁”有关的问题。

问题表现出的现象是,有的时候JTextPane无法正常显示消息内容,有的时候干脆就抛出元件内部的异常。

我当时也没想到是与线程有问,后来当我想到有可能与线程有关时,我在那个将消息添加到JtextPane中的两个方法:addMsg() 与 addReceiveMsg()前面加上synchronized 后,问题就没了。

显然,在使用多线程的时候,一定要注意,有时是必须要使用synchronized。

 

2007-04-17

相关文章:

  • 2021-08-11
  • 2022-01-01
  • 2021-06-17
  • 2021-04-06
  • 2022-01-28
  • 2021-09-15
  • 2022-12-23
  • 2022-01-11
猜你喜欢
  • 2022-02-19
  • 2022-12-23
  • 2021-12-15
  • 2021-09-19
  • 2021-04-11
  • 2021-10-05
相关资源
相似解决方案