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

📄 aethread2.java

📁 java 文件下载器。可自定义
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   AEThread2.java

package org.gudy.azureus2.core3.util;

import java.util.LinkedList;

// Referenced classes of package org.gudy.azureus2.core3.util:
//			AEThread, AESemaphore, DebugLight, SystemTime

public abstract class AEThread2
{
	private static final class JoinLock
	{

		volatile boolean released;

		private JoinLock()
		{
			released = false;
		}

	}

	protected static class threadWrapper extends Thread
	{

		private AESemaphore sem;
		private AEThread2 target;
		private JoinLock currentLock;
		private long last_active_time;

		public void run()
		{
_L3:
			JoinLock joinlock = currentLock;
			JVM INSTR monitorenter ;
			target.run();
			target = null;
			currentLock.released = true;
			currentLock.notifyAll();
			break MISSING_BLOCK_LABEL_88;
			Throwable e;
			e;
			DebugLight.printStackTrace(e);
			target = null;
			currentLock.released = true;
			currentLock.notifyAll();
			break MISSING_BLOCK_LABEL_88;
			Exception exception;
			exception;
			target = null;
			currentLock.released = true;
			currentLock.notifyAll();
			throw exception;
			Exception exception1;
			exception1;
			throw exception1;
			AEThread2.daemon_threads.addLast(this);
			setName((new StringBuilder()).append("AEThead2:parked[").append(AEThread2.daemon_threads.size()).append("]").toString());
			linkedlist;
			JVM INSTR monitorexit ;
			  goto _L1
			exception2;
			throw exception2;
_L1:
			sem.reserve();
			if (target != null) goto _L3; else goto _L2
_L2:
		}

		protected void start(AEThread2 _target, String _name)
		{
			target = _target;
			setName(_name);
			if (sem == null)
			{
				sem = new AESemaphore("AEThread2");
				super.start();
			} else
			{
				sem.release();
			}
		}

		protected void retire()
		{
			sem.release();
		}


		protected threadWrapper(String name, boolean daemon)
		{
			super(name);
			setDaemon(daemon);
		}
	}


	public static final boolean TRACE_TIMES = false;
	private static final int MIN_RETAINED = 2;
	private static final int MAX_RETAINED = 16;
	private static final int THREAD_TIMEOUT_CHECK_PERIOD = 10000;
	private static final int THREAD_TIMEOUT = 60000;
	private static final LinkedList daemon_threads = new LinkedList();
	private static long last_timeout_check;
	private static long total_starts;
	private static long total_creates;
	private threadWrapper wrapper;
	private String name;
	private boolean daemon;
	private int priority;
	private volatile JoinLock lock;

	public AEThread2(String _name, boolean _daemon)
	{
		priority = 5;
		lock = new JoinLock();
		name = _name;
		daemon = _daemon;
	}

	public void start()
	{
		JoinLock currentLock = lock;
		JoinLock newLock;
		synchronized (currentLock)
		{
			if (currentLock.released)
				newLock = lock = new JoinLock();
			else
				newLock = currentLock;
		}
		if (daemon)
			synchronized (daemon_threads)
			{
				total_starts++;
				if (daemon_threads.isEmpty())
				{
					total_creates++;
					wrapper = new threadWrapper(name, true);
				} else
				{
					wrapper = (threadWrapper)daemon_threads.removeLast();
					wrapper.setName(name);
				}
			}
		else
			wrapper = new threadWrapper(name, false);
		if (priority != wrapper.getPriority())
			wrapper.setPriority(priority);
		wrapper.currentLock = newLock;
		wrapper.start(this, name);
	}

	public void setPriority(int _priority)
	{
		priority = _priority;
		if (wrapper != null)
			wrapper.setPriority(priority);
	}

	public void setName(String s)
	{
		name = s;
		if (wrapper != null)
			wrapper.setName(name);
	}

	public String getName()
	{
		return name;
	}

	public void interrupt()
	{
		if (wrapper == null)
		{
			throw new IllegalStateException("Interrupted before started!");
		} else
		{
			wrapper.interrupt();
			return;
		}
	}

	public boolean isCurrentThread()
	{
		return wrapper == Thread.currentThread();
	}

	public String toString()
	{
		if (wrapper == null)
			return (new StringBuilder()).append(name).append(" [daemon=").append(daemon).append(",priority=").append(priority).append("]").toString();
		else
			return wrapper.toString();
	}

	public abstract void run();

	public static boolean isOurThread(Thread thread)
	{
		return AEThread.isOurThread(thread);
	}

	public static void setOurThread()
	{
		AEThread.setOurThread();
	}

	public static void setOurThread(Thread thread)
	{
		AEThread.setOurThread(thread);
	}

	public void join()
	{
		JoinLock currentLock = lock;
		synchronized (currentLock)
		{
			while (!currentLock.released) 
				try
				{
					currentLock.wait();
				}
				catch (InterruptedException e) { }
		}
	}




}

⌨️ 快捷键说明

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