java 并发多线程的声明

本文介绍了使用Java进行并发编程时创建线程的多种方法,包括通过继承Thread类和实现Runnable接口来启动线程的具体实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package concurrency;
import static net.mindview.util.Print.*;
import java.util.concurrent.TimeUnit;
/*
 * InnerThread1 创建了一个扩展自Thread的匿名内部类,并且在构造器中创建了这个内部类的实例
 * 
 * InnerThread2在构造器中创建了一个匿名Thread子类,并且向上转型为Thread引用t。*/
class InnerThread1{
	private int countDown=5;
	private Inner inner;
	private class Inner extends Thread{
		Inner(String name){
			super(name);
			start();
		}
		public void run(){
			try{
				while(true){
					print(this);
					if(--countDown==0)
						return;
					sleep(10);
				}
			}catch(InterruptedException e){
				print("interrupted");
			}
		}
		public String toString(){
			return getName()+": "+countDown;
		}
	}
	public InnerThread1(String name){
		inner=new Inner(name);
	}
}
class InnerThread2{
	private int countDown=5;
	private Thread t;
	public InnerThread2(String name){
		t=new Thread(name){
			public void run(){
				try{
					while(true){
						print(this);
					if(--countDown==0)
						return;
					sleep(10);
				  }
				}catch(InterruptedException e){
					print("sleep() interrupted");
				}
			}
			public String toString(){
				return getName()+": "+countDown;
			}
		};
		t.start();
	}
}
class InnerRunnable1{
	private int countDown=5;
	private Inner inner;
	private class Inner implements Runnable{
		Thread t;
		Inner(String name){
			t=new Thread(this,name);
			t.start();
		}
		public void run(){
			try{
				while(true){
					print(this);
					if(--countDown==0)
						return;
					TimeUnit.MILLISECONDS.sleep(10);
				}
			}catch(InterruptedException e){
				print("sleep() interrupted");
			}
		}
		public String toString(){
			return t.getName()+": "+countDown;
		}
	}
	public InnerRunnable1(String name){
		inner=new Inner(name);
	}
}
class InnerRunnable2{
	private int countDown=5;
	private Thread t;
	public InnerRunnable2(String name){
		t=new Thread(new Runnable(){
			public void run(){
				try{
					while(true){
						print(this);
						if(--countDown==0)return;
						TimeUnit.MILLISECONDS.sleep(10);
					}
				}catch(InterruptedException e){
					print("sleep() interrupted");
				}
			}
			public String toString(){
				return Thread.currentThread().getName()+": "+countDown;
			}
		},name);
		t.start();
	}
}
class ThreadMethod{
	private int countDown=5;
	private Thread t;
	private String name;
	public ThreadMethod(String name){this.name=name;}
	public void runTask(){
		if(t==null){
			t=new Thread(name){
				public void run(){
					try{
						while(true){
							print(this);
							if(--countDown==0)return;
							sleep(10);
						}
					}catch(InterruptedException e){
						print("sleep() interrupted");
					}
				}
				public String toString(){
					return getName()+": "+countDown;
				}
			};
			t.start();
		}
	}
}
public class ThreadVariations {
     public static void main(String[]args){
    	 new InnerThread1("InnerThread1");
    	 new InnerThread2("InnerThread2");
    	 new InnerRunnable1("InnerRunnable1");
    	 new InnerRunnable2("InnerRunnable2");
    	 new ThreadMethod("ThreadMethod").runTask();
     }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值