> For the complete documentation index, see [llms.txt](https://gyansetu-java.gitbook.io/core-java/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gyansetu-java.gitbook.io/core-java/threads/methods-of-thread/end-thread-execution.md).

# End Thread Execution

### 1) Using Boolean flag:

In this method, we declare one *boolean* variable called *flag* in a thread. Initially we set this *flag* as *true*. Keep the task to be performed in *while* loop inside the *run()* method by passing this *flag*. This will make thread continue to run until *flag* becomes *false*. We have defined *stopRunning()* method. This method will set the *flag* as *false* and stops the thread. Whenever you want to stop the thread, just call this method. Also notice that we have declared *flag* as *volatile*. This will make thread to read its value from the main memory, thus making sure that thread always gets its updated value.

```java
class MyThread extends Thread
{
	//Initially setting the flag as true
	
	private volatile boolean flag = true;
	
	//This method will set flag as false
	
	public void stopRunning()
	{
		flag = false;
	}
	
	@Override
	public void run()
	{
		//Keep the task in while loop
		
		//This will make thread continue to run until flag becomes false
		
		while (flag)
		{
			System.out.println("I am running....");
		}
		
		System.out.println("Stopped Running....");
	}
}

public class MainClass 
{   
	public static void main(String[] args) 
	{
		MyThread thread = new MyThread();
		
		thread.start();
		
		try 
		{
			Thread.sleep(100);
		} 
		catch (InterruptedException e) 
		{
			e.printStackTrace();
		}
		
		//call stopRunning() method whenever you want to stop a thread
		
		thread.stopRunning();
	}	
}
```

```
Output :
I am running….
I am running….
I am running….
I am running….
I am running….
I am running….
I am running….
Stopped Running….
```

### 2) By calling interrupt() method

In this method, we use *interrupt()* method to stop a thread. Whenever you call *interrupt()* method on a thread, it sets the *interrupted status* of a thread. This status can be obtained by *interrupted()* method. This status is used in a *while* loop to stop a thread.

```java
class MyThread extends Thread
{	
	@Override
	public void run()
	{
		while (!Thread.interrupted())
		{
			System.out.println("I am running....");
		}
		
		System.out.println("Stopped Running.....");
	}
}

public class MainClass 
{   
	public static void main(String[] args) 
	{
		MyThread thread = new MyThread();
		
		thread.start();
		
		try 
		{
			Thread.sleep(100);
		} 
		catch (InterruptedException e) 
		{
			e.printStackTrace();
		}
		
		//interrupting the thread
		
		thread.interrupt();
	}	
}
```

```
Output :
I am running….
I am running….
I am running….
I am running….
I am running….
I am running….
I am running….
Stopped Running….
```
