JAVA中创建线程的方法及比较

  JAVA中提供了Thread类来创建多线程的应用,常用的方式有以下2种。

一、实现Runnable接口来创建线程

1、创建一个任务类,实现Runnable接口,并重写run()方法,run()方法中的内容就是需要线程完成的任务。

2、创建一个任务类的对象。

3、任务类必须在线程中执行,因此将任务类的对象作为参数,创建一个Thread类对象,该Thread类对象才是真正的线程对象。

4、调用Thread线程类对象的start()方法,来启动一个线程。

代码实例:

 1 public class TestThread implements Runnable {
 2     public void run() {
 3         for (int i = 0; i < 20; i++) {
 4             // 获取线程名称,默认格式:Thread-0
 5             System.out.println(Thread.currentThread().getName() + " " + i);
 6         }
 7     }
 8
 9     public static void main(String[] args) {
10         TestThread tt1 = new TestThread();
11         TestThread tt2 = new TestThread();
12         // 可为线程添加名称:Thread t1 = new Thread(tt1, "线程1");
13         Thread t1 = new Thread(tt1);
14         Thread t2 = new Thread(tt2);
15         t1.start();
16         t2.start();
17     }
18 }

二、继承Thread类来创建线程

1、创建一个任务类,继承Thread线程类,并重写run()方法,run()方法中的内容就是需要线程完成的任务。

2、创建一个任务类的对象,即创建了线程对象。

3、调用任务类对象的start()方法,来启动一个线程。

代码实例:

 1 public class TestThread extends Thread {
 2     public void run() {
 3         for (int i = 0; i < 20; i++) {
 4             // 与Thread.currentThread().getName()相同
 5             System.out.println(this.getName() + " " + i);
 6         }
 7     }
 8
 9     public static void main(String[] args) {
10         TestThread t1 = new TestThread();
11         TestThread t2 = new TestThread();
12         t1.start();
13         t2.start();
14     }
15 }

三、实现Runnable接口与继承Thread类来创建线程的比较

1、实现Runnable接口的方式:

(1)优点:编写稍微复杂,任务类中访问当前线程时,必须使用Thread.currentThread()方法。

(2)缺点:任务类只实现了Runnable接口,还可以继承其他类。这种方式,可以多个线程对象共享一个任务类对象,即多线程共享一份资源的情况,如下:

1     TestThread tt1 = new TestThread();
2     Thread t1 = new Thread(tt1);
3     Thread t2 = new Thread(tt1);
4     t1.start();
5     t2.start();

2、继承Thread类方式:

(1)优点:编写简单,任务类中访问当前线程时,可以直接使用this关键字。

(2)缺点:任务类即县城类已经继承了Thread类,所以不能再继承其他父类。

  总结:在仅仅只重写run()方法,而不重写Thread类其他方法的前提下,比较推荐实现Runnable接口的方式创建线程。

时间: 2025-01-01 21:19:48

JAVA中创建线程的方法及比较的相关文章

java中创建线程的三种方法以及区别

Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.Java可以用三种方式来创建线程,如下所示: 1)继承Thread类创建线程 2)实现Runnable接口创建线程 3)使用Callable和Future创建线程 下面让我们分别来看看这三种创建线程的方法. ------------------------继承Thread类创建线程--------------------- 通过继承Thread类来创建并启动多线程的一般步骤如下 1]d定义Thread类的子类

java中创建线程的3种方法

1.继承Thread类优点:可以直接使用Thread类中的方法,代码比较简单.缺点:继承Thread类之后不能继承其他类. 2.实现Runable接口优点:实现接口,比影响继承其他类或实现接口.缺点: 3.实现Callable接口优点:可以获取返回值,可以抛出异常.缺点:实现方法相对复杂 三种方法的实现例 public static void main(String[] args) throws InterruptedException, ExecutionException { //继承Thr

Java中创建线程用第几种方式

2015年11月19日10:16:33 作者:数据分析玩家 //用第一种方法创建线程:每个线程处理的是不同的资源//每个线程分别对应20张电影票,之间并无任何关系,这就说明每个线程之间是平等的,没有优先级关系class Tc extends Thread { private int tickets = 20;//每个线程各自卖20张票 public String name ; public Tc(String name) { this.name = name; } public void run

Java中创建线程的两种方式

1.定义实现Runnable接口的线程类,步骤如下: (1)创建实现了Runnable接口的线程类Runner: (2)重写Runnable接口的run()方法,用于定义线程的运行体:(Runnable接口只有这一个方法) (3)实例化线程类Runner: (4)创建线程实例,并将线程类Runner的实例传递给它作为构造函数的参数: (5)启动线程: 代码如下所示: 1 public class TestThread { 2 public static void main(String args

.NET中创建线程的方法

1:UI线程.这个线程是操作系统自动创建的,你画了个winform,那么程序一启动,自然有了这么个线程.值得注意的是,你添加一个Timer控件,现实的多线程,实际上,依然在UI线程里.只是定时被Timer夺去控制权而已,本质上依然是单线程.另一个线索也可以论证:本来非UI线程想更新UI界面,是需要利用delegate,involk等来实现的,但是在timer控件的线程里,是不需要的.2:Thread thread = new Thread(obj.functionName); thread.st

Java多线程--创建线程

1.创建线程 在Java中创建线程有两种方法:使用Thread类和使用Runnable接口.在使用Runnable接口时需要建立一个Thread实例.因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例.Thread构造函数: public Thread( ); public Thread(Runnable target); public Thread(String name); public Thread(Runnable target, S

Java中的线程Thread解析及用途

Java中的线程 进程和线程 在并发性程序中,有两个基本的执行单元:进程和线程.在Java编程语言中,并发编程大多数情况下都是和线程相关.然而,进程也是很重要的. 一个计算机系统中通常都有很多活动的进程和线程.这一点即使是在只有一个执行核心,并且在给定时刻只能执行一个线程的系统中都是存在的.单一核心的处理时间是由整个操作系统的"时间片"特性来在众多的进程和线程中共享的. 现在,计算机系统中有多个处理器或者是有多核处理器的情况越来越普遍.这就大大增强了系统执行多个进程和线程的并发性. 进

java中的jdbc连接数据库方法及应用

jdbc连接数据库的口诀:猪脸特直观 import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Demo03 { public static void main(String[] args) thr

程序员:java中直接或间接创建线程的方法总结

在java开发中,经常会涉及多线程的编码,那么通过直接或间接创建线程的方法有哪些?现整理如下: 1.继承Thread类,重写run()方法 class Worker extends Thread { @Override public void run() { System.out.println("Code run in a sub thread!"); } } public class CreateThreadTester { public static void main(Stri