⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sample18_6.java

📁 Java SE 6.0前12-16章示的示例代码,简单易学
💻 JAVA
字号:
package wyf.jc;
//定义线程垃圾类
class RubbishThread extends Thread
{
	//定义一个自身类型的引用
	RubbishThread brother;
	//定义字符串变量
	String rtname;
	//无参构造器
	public RubbishThread()
	{}
	//有参构造器
	public RubbishThread(String rtname)
	{
		this.rtname=rtname;
	}
	//重写run方法
	public void run()
	{
		System.out.println(rtname+"线程开始执行!!!");
		//对线程进行延迟,使其在足够时间内是活着的
		try
		{
			Thread.sleep(1000);
		}
		catch(Exception e)
		{	
			e.printStackTrace();
		}
		System.out.println(rtname+"线程执行结束!!!");
	}
	//重写finalize方法
	public void finalize()
	{
		System.out.println(rtname+"对象成为垃圾,并被收集!!!");
	}
}
//主类
public class Sample18_6
{
	public static void main(String[] args)
	{
		//创建三个线程对象
		RubbishThread rt1=new RubbishThread("孤岛中的rt1线程");
		RubbishThread rt2=new RubbishThread("孤岛中的rt2线程");
		RubbishThread rt3=new RubbishThread("孤岛中的rt3线程");
		//让每个线程的brother引用指向其他线程对象,形成一个环
		rt1.brother=rt2;
		rt2.brother=rt3;
		rt3.brother=rt1;
		//启动一个线程
		rt1.start();
		//形成孤岛
		rt1=null;
		rt2=null;
		rt3=null;		
		//申请执行垃圾收集器
		System.out.println("============对无引用但活着的线程进行垃圾收集==========");
		System.gc();
		//设置延迟使垃圾收集运行而不运行主线程代码
		try
		{
			Thread.sleep(2000);//主线程休眠100毫秒
		}
		catch(Exception e)
		{	
			e.printStackTrace();
		}		
		//线程进入死亡状态后申请执行垃圾收集
		System.out.println("============对无引用并死亡的线程进行垃圾收集==========");
		System.gc();
		//设置延迟使垃圾收集运行而不运行主线程代码
		try
		{
			Thread.sleep(1000);//主线程休眠100毫秒
		}
		catch(Exception e)
		{	
			e.printStackTrace();
		}	
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -