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:
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.
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.