1。线程的概念:线程(线程)是指一个任务从头至尾的执行流,线程提供一个运行任务的机制,对于java而言,一个程序中可以并发的执行多个线程,这些线程可以在多处理器系统上同时运行。当程序作为一个应用程序运行时,java解释器为主要()方法启动一个线程。
2。并行与并发:
(1)并发:在单处理器系统中,多个线程共享CPU时间,而操作系统负责调度及分配资源给它们。
(2)并行:在多处理器系统中,多个处理器可以同时运行多个线程,这些线程在同一时间可以同时运行,而不同于并发,只能多个线程共享CPU时间,同一时间只能运行一个线程。
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多线程中线程的两种创建方式及比较代码示例