Java暂停线程-学习笔记

暂停线程即线程还可以恢复运行。Java多线程中,可以使用suspend()方法暂停线程,使用resume()方法恢复线程执行。

一、基本使用

public class MyThread extends Thread{
	private long i = 0;
	public long getI()
	{
		return i;
	}
	public void setI(long i)
	{
		this.i = i;
	}
	public void run()
	{
		while(true)
		{
			i++;
		}
	}
}public class App {
	public static void main(String[] args)
	{
		try
		{
			MyThread thread  = new MyThread();
			thread.start();
			Thread.sleep(500);
			thread.suspend();
			System.out.println("A= "+System.currentTimeMillis()+" i="+thread.getI());
			Thread.sleep(5000);
			System.out.println("A= "+System.currentTimeMillis()+" i="+thread.getI());
			
			thread.resume();
			System.out.println("B= "+System.currentTimeMillis()+" i="+thread.getI());
			Thread.sleep(5000);
			System.out.println("B= "+System.currentTimeMillis()+" i="+thread.getI());
		}
		catch(InterruptedException e)
		{
			e.printStackTrace();
		}
	}
}

Output:

A= 1500717071978 i=93100885
A= 1500717076979 i=93100885
B= 1500717076979 i=93127095
B= 1500717081980 i=1091104232

二、suspend与resume缺点

1、独占

在使用suspend与resume方法时,如果使用不当,极易造成公共的同步对象独占,是的其它线程无法访问公共同步对象。