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

  

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

  

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

  

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

  

单线程代码例子:

        公开课SingleThread {   公共静态void main (String [] args) {   线程的线程=Thread.currentThread ();//获取当前运行的线程对象   thread.setName(“单线程”);//线程重命名   System.out.println (thread.getName() +”正在运行”);   (int i=0; i<10;我+ +){   System.out.println(“线程正在休眠:”+ i);   尝试{   thread . sleep (1000);//线程休眠,延迟一秒   }捕捉(InterruptedException e) {//TODO自动生成的catch块   e.printStackTrace ();   System.out.println(“线程出错”);   }   }   }   }      

多线程代码例子:

  

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

  

<强>继承线程类实现多线程

        公开课TestThread {   公共静态void main (String [] args) {   线程t1=new ExtendThread (t1, 1000);//使用上转对象创建线程,并构造线程名字和线程休眠时间   线程t2=new ExtendThread (t2, 2000);   线程t3=new ExtendThread (t3, 3000);   t1.start ();//启动线程并调用运行方法   t2.start ();   t3.start ();   }   }   类ExtendThread扩展线程{//继承线程的类   字符串名称;   int时间;   公共ExtendThread(字符串名称,int){//构造线程名字和休眠时间   this.name=名称;   this.time=时间;   }   公共空间run(){//重写线程类的运行方法   尝试{   睡眠(时间);//所有线程加入休眠   }   抓住(InterruptedExceptione) {   e.printStackTrace ();   System.out.println(“线程中断异常”);   }   System.out.println(“名称为:“+名字+”,线程休眠:”+时间+“毫秒”);   }   }      

<>强实现运行的接口的多线程

        公开课RunnableThread {   公共静态void main (String [] args) {   可运行r1=new ImplRunnable (r1, 1000);//运行的接口必须依托线程类才能创建线程   线程t1=新线程(r1);//可运行并不能调用开始()方法,因为不是线程,所以要用线程类加入线程   可运行r2=new ImplRunnable (r2, 2000);   线程t2=新线程(r2);   可运行r3=new ImplRunnable (r3, 3000);   线程t3=新线程(r3);      t1.start ();//启动线程并调用运行方法   t2.start ();   t3.start ();   }   }   类ImplRunnable实现Runnable{//继承Runnable接口的类   字符串名称;   int时间;   公共ImplRunnable(字符串名称,int){//构造线程名字和休眠时间   this.name=名称;   这一点。时间=时间;   }      @Override   公共空间run(){//实现可运行的运行方法   尝试{   thread . sleep ();//所有线程加入休眠   }   抓住(InterruptedException e) {   e.printStackTrace ();   System.out.println(“线程中断异常”);   }   System.out.println(“名称为:“+名字+”,线程休眠:”+时间+“毫秒”);   }   }      

说明:线程类实际上也是实现了Runnable接口的类。

  

实现运行的接口比继承线程类所具有的优势

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