Java多线程中线程的两种创建方式及比较代码示例

  

1。线程的概念:线程(线程)是指一个任务从头至尾的执行流,线程提供一个运行任务的机制,对于java而言,一个程序中可以并发的执行多个线程,这些线程可以在多处理器系统上同时运行。当程序作为一个应用程序运行时,java解释器为主要()方法启动一个线程。

  

2。并行与并发:

  

(1)并发:在单处理器系统中,多个线程共享CPU时间,而操作系统负责调度及分配资源给它们。

  

(2)并行:在多处理器系统中,多个处理器可以同时运行多个线程,这些线程在同一时间可以同时运行,而不同于并发,只能多个线程共享CPU时间,同一时间只能运行一个线程。

  

癑ava多线程中线程的两种创建方式及比较代码示例"

  

3。线程的创建:

  

(1)基础概念:java中每个任务就是一个可运行对象,为了创建任务,必须首先定义任务类,任务类必须实现运行的接口。而线程本质上讲就是便于任务执行的对象。一个线程的执行过程就是一个任务类中运行()方法的执行到结束。

  

(2)通过Runnable接口创建线程:

  

。定义一个任务类实现运行的接口,实现运行的接口中运行的()方法(运行()方法告知系统线程该如何运行),运行()方法中定义具体的任务代码或处理逻辑。

  

b。定义了任务类后,为任务类创建一个任务对象。

  

c。任务必须在线程中执行,创建一个胎面类的对象,将前面创建的实现了Runnable接口的任务类对象作为参数传递给胎面类的构造方法。

  

d。调用胎面类对象的开始()方法,启动一个线程。它会导致任务的运行()方法被执行,当运行()方法执行完毕,则线程就终止。

  

实例代码:

        包com.muzeet.mutithread;//每个任务都是Runable接口的一个实例,任务是可运行对象,线程是便于任务执行的对象。必须创建任务类,重写运行方法定义任务   公共类ThreadDemo1实现Runnable {   私人int倒计时=10;   @Override//重写运行方法,定义任务   公共空间run () {   而(倒计时——在0)   {   system . out。println (“$”+ Thread.currentThread () . getname ()   +”(倒计时" + + ")");   }   }//调用开始方法会启动一个线程,导致任务中运行的方法被调用,运行方法执行完毕则线程终止      公共静态void main (String [] args) {   可运行demo1=new ThreadDemo1 ();      线程thread1=新线程(demo1);   线程thread2=新线程(demo1);   thread1.start ();   thread2.start ();      System.out.println(“火箭发射倒计时:”);   }      }      

程序运行结果:

        火箭发射倒计时:   美元Thread-0 (9)   美元Thread-0 (8)   美元Thread-0 (7)   美元Thread-0 (6)   美元Thread-0 (5)   美元Thread-0 (4)   美元Thread-0 (3)   美元Thread-0 (2)   美元Thread-0 (1)   美元Thread-0 (0)      

同时运行两个任务对象:

        公共静态void main (String [] args) {   可运行demo1=new ThreadDemo1 ();   可运行以及接下来=new ThreadDemo1 ();   线程thread1=新线程(demo1);   线程thread2=新线程(以及接下来);   thread1.start ();   thread2.start ();      System.out.println(“火箭发射倒计时:”);   }      

运行结果:

        火箭发射倒计时:   美元Thread-0 (9)   美元Thread-0 (8)   美元Thread-0 (7)   美元Thread-0 (6)   线程1美元(9)   美元Thread-0 (5)   线程1美元(8)   美元Thread-0 (4)   线程1美元(7)   美元Thread-0 (3)   线程1美元(6)   线程1美元(5)   美元Thread-0 (2)   线程1美元(4)   线程1美元(3)   线程1美元(2)   线程1美元(1)   线程1美元(0)   美元Thread-0 (1)   美元Thread-0 (0)      

(3)继承线程类来创建线程:

  

。首先创建一个任务类扩展了线程类,因为线程类实现了Runnable接口,所以自定义的任务类也实现了Runnable接口,重新运行()方法,其中定义具体的任务代码或处理逻辑。

  

b。创建一个任务类对象,可以用线程或者可作为自定义的变量类型。

  

c。调用自定义对象的开始()方法,启动一个线程。

  

示例代码:

        包com.muzeet.mutithread;//每个任务都是Runable接口的一个实例,任务是可运行对象,线程即可运行对象。必须创建任务类,重写运行方法定义任务   公共类ExtendFromThread扩展线程{   私人int倒计时=10;   @Override//重写运行方法,定义任务   公共空间run () {   而(倒计时——在0)   {   system . out。println (“$”+ this.getName ()   +”(倒计时" + + ")");   }   }//调用开始方法会启动一个线程,导致任务中运行的方法被调用,运行方法执行完毕则线程终止      公共静态void main (String [] args) {      ExtendFromThread thread1=new ExtendFromThread ();   ExtendFromThread thread2=new ExtendFromThread ();   thread1.start ();   thread2.start ();      System.out.println(“火箭发射倒计时:”);   }      }

Java多线程中线程的两种创建方式及比较代码示例