• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Alive check thread when reading from socket

 
Michal Glowacki
Ranch Hand
Posts: 114
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have an application that connects to remote socket and waits for xml messages. I need also to check if the time between those messages is not bigger than x seconds. I never wrote threaded application in java, could anyone help me? I am even more confused because of socket reading. Not sure how can I pause it and switch the thread. This is code snippet:

 
Ulf Dittmer
Rancher
Pie
Posts: 42967
73
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
For an introduction to Java sockets see http://java.sun.com/docs/books/tutorial/networking/sockets/index.html. It contains a working client/server pair.

Also read Don't println to a Socket; it looks as if the code you posted is susceptible to that problem.
 
Michal Glowacki
Ranch Hand
Posts: 114
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Ulf Dittmer wrote:For an introduction to Java sockets see http://java.sun.com/docs/books/tutorial/networking/sockets/index.html. It contains a working client/server pair.

Also read Don't println to a Socket; it looks as if the code you posted is susceptible to that problem.


I am sorry Ulf but I don't know how it applies to my question/problem. I am wondering, how to swap to check-alive-thread when awaiting an input from server socket. So, my app is continously awaiting data from socket, but another thread should make a check fx each second if the waiting time not exceeded x seconds.
 
Nitesh Kant
Bartender
Posts: 1638
IntelliJ IDE Java MySQL Database
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Michal Glowacki wrote:I am wondering, how to swap to check-alive-thread when awaiting an input from server socket. So, my app is continously awaiting data from socket, but another thread should make a check fx each second if the waiting time not exceeded x seconds.


There is no need for swaping the thread reading the data. All it needs to do is have a state variable (volatile) that tells whether it has received any data or not.
As soon as you start reading start a Timer (simplest approach) which checks for the state variable every "x" minutes [Every X minutes if you want to keep the socket reader alive forever and it should get something every x seconds]. If the state variable says that the data is not received the interrupt the reader thread or inform the admin, as your application demands.
 
Michal Glowacki
Ranch Hand
Posts: 114
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Nitesh, this is what I needed!
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic