实例分析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类所具有的优势
上一篇: Java核心类库-下(五)反射机制