Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: Java Swing Threading
Is there a way to immediately stop a thread depending on a boolean variable. In my application, the ReceiveMessage runs in a while loop while(isRunning), but the boolean variable is modified by the windowClosing event. I want the thread to stop immediately when the window is closed..
public class ChatWindow extends WindowAdapter implements ActionListener {
..............
..............
    public void windowClosing(WindowEvent w){
		try{
			
			dos.flush();
                        frame.dispose();
                        isRunning =false;
			
                        //t1.stop();
			}catch(Exception oe){}
		}
}
 
class ReceiveMessage implements Runnable
{
..................
..................
    public void run()
    {
        
        while(ChatWindow.isRunning)
        {  try
            {
                while(true)
                {
                String str = dislocal.readUTF();
                chatmodel.addElement(chatwith+":> "+str);
                }
            }
            catch(Exception e)
            {
                System.out.println("Error receiving message!");
            }
        }
    }
 
}
 
Posted 19-Oct-11 4:54am

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

You can interrupt a thread with the interrupt() method.
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 490
1 Maciej Los 305
2 Richard MacCutchan 270
3 Mathew Soji 220
4 BillWoodruff 210
0 OriginalGriff 8,834
1 Sergey Alexandrovich Kryukov 7,477
2 DamithSL 5,689
3 Maciej Los 5,329
4 Manas Bhardwaj 4,986


Advertise | Privacy | Mobile
Web02 | 2.8.1411028.1 | Last Updated 19 Oct 2011
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100