欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

实例分析Java单线程与多线程

程序员文章站 2022-03-25 15:02:31
线程:每一个任务称为一个线程,线程不能独立的存在,它必须是进程的一部分 单线程:般常见的java应用程序都是单线程的,比如运行helloworld的程序时,会启动jvm进...

线程:每一个任务称为一个线程,线程不能独立的存在,它必须是进程的一部分

单线程:般常见的java应用程序都是单线程的,比如运行helloworld的程序时,会启动jvm进程,然后运行main方法产生线程,main方法也被称为主线程。

多线程:同时运行一个以上线程的程序称为多线程程序,多线程能满足程序员编写高效率的程序来达到充分利用 cpu 的目的。

单线程代码例子:

public class singlethread {
	public static void main(string[] args){
		thread thread = thread.currentthread(); //获取当前运行的线程对象
		thread.setname("单线程"); //线程重命名
		system.out.println(thread.getname()+"正在运行");
		for(int i=0;i<10;i++){
			system.out.println("线程正在休眠:"+i);
			try {
				thread.sleep(1000); //线程休眠,延迟一秒
			} catch (interruptedexception e) {
				// todo auto-generated catch block
				e.printstacktrace();
				system.out.println("线程出错");
			}
		}
	}
}

多线程代码例子:

注意:多线程有两种实现方式,一种是继承thread类,另一种是实现runnable接口。

继承thread类实现多线程

public class testthread {
	public static void main(string[] args){
		 thread t1 = new extendthread("t1",1000); //使用上转对象创建线程,并构造线程名字和线程休眠时间
		 thread t2 = new extendthread("t2",2000); 
		 thread t3 = new extendthread("t3",3000); 
		 t1.start(); //启动线程并调用run方法
		 t2.start();
		 t3.start();
	}
}
class extendthread extends thread{ //继承thread的类
	string name;
	int time;
	public extendthread(string name, int time) { //构造线程名字和休眠时间
		this.name=name;
		this.time=time;
	}	
	public void run(){ //重写thread类的run方法
		try{
			sleep(time); //所有线程加入休眠
		}
		catch(interruptedexceptione){
			e.printstacktrace();
			system.out.println("线程中断异常");
		}
		system.out.println("名称为:"+name+",线程休眠:"+time+"毫秒"); 
	}
}

实现runnable接口的多线程

public class runnablethread {
	public static void main(string[] args){
		runnable r1=new implrunnable("r1",1000); //runnable接口必须依托thread类才能创建线程
		thread t1=new thread(r1); //runnable并不能调用start()方法,因为不是线程,所以要用thread类加入线程
		runnable r2=new implrunnable("r2",2000);
		thread t2=new thread(r2);
		runnable r3=new implrunnable("r3",3000);
		thread t3=new thread(r3);
		
		t1.start(); //启动线程并调用run方法
		t2.start();
		t3.start();
	}
}
class implrunnable implements runnable{ //继承runnable接口的类
	string name;
	int time;	
	public implrunnable(string name, int time) { //构造线程名字和休眠时间
		this.name = name;
		this.time = time;
	}

	@override
	public void run() { //实现runnable的run方法
		try{
			thread.sleep(time); //所有线程加入休眠
		}
		catch(interruptedexception e){
			e.printstacktrace();
			system.out.println("线程中断异常");
		}
		system.out.println("名称为:"+name+",线程休眠:"+time+"毫秒");
	}
}

说明:thread类实际上也是实现了runnable接口的类。

实现runnable接口比继承thread类所具有的优势