`

线程 创建方式和优缺点

 
阅读更多

 

 

1 创建方式:

 

Thread中的的核心方法run,  看如下代码可以知道,1可以继承Thread类后重写这个方法。也可以public Thread(Runnable target) 在创建时传递Runnable类并实现Runnable的run()方法这两种方式
实现继承Thread类
 @Override
    public void run() {
        if (target != null) {
            target.run();
        }
    }

 

其中,Java是单基础多实现体系,使用 extends Thread方式的话,如果我们的类已经继承了一个类,那么就无法在 extends Thread类了,并且使用实现静态代理类方式实现线程创建也能共享资源,(如何共享资源见

线程 静态代理的使用 模拟抢票代码)

因此 建议使用  第二种方式:

public Thread(Runnable target) 在创建时传递Runnable类并实现Runnable的run()方法

 

2 继承方式创建线程:

 

/**
 * 模拟龟兔赛跑
 1、创建多线程  继承  Thread  +重写run(线程体)
 2、使用线程: 创建子类对象 + 对象.start()  线程启动
     
 * 
 * @author Administrator
 *
 */
public class Rabbit extends Thread {

	@Override
	public void run() {
		//线程体
		for(int i=0;i<100;i++){
			System.out.println("兔子跑了"+i+"步");
		}
		
		
	}
	
}
class Tortoise extends Thread {

	@Override
	public void run() {
		//线程体
		for(int i=0;i<100;i++){
			System.out.println("乌龟跑了"+i+"步");
		}
		
		
	}
	
}


public class RabbitApp {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//创建子类对象
		Rabbit rab = new Rabbit();
		Tortoise tor =new Tortoise();
		
		
		//调用start 方法 ,启动兔子线程
		rab.start(); //不要调用run方法, 相当于 线程准备好了,加入线程组,并告之cpu。等待cpu分配计算资源的那个时间片(兔子在起跑线准备好,等待裁判枪响)
		//调用start 方法 ,启动乌龟线程
		tor.start();
		// main主线程中启动一个循环   这样这个进程RabbitApp启动后,里面就会有三个线程,执行后能看到执行结果中每一行所在的时间片内只有这个线程在执行并打印结果
		for(int i=0;i<1000;i++){
			System.out.println("main==>"+i);
		}
	}

}

 

 

 

 第二种创建方式见: 

线程 静态代理的使用 

 

分享到:
评论

相关推荐

    Java创建线程三种方式的优缺点

    实现Callable和Future创建线程是Java中一种功能强大的线程创建方式。这种方式下,需要创建一个实现Callable接口的类,并使用FutureTask类来包装Callable对象。例如: ```java class Thread3 implements Callable...

    操作系统实验-线程的创建和撤消.pdf

    同时,我们也了解了多线程编程的优缺点和应用场景。 九、 future work 在未来的实验中,我们可以继续探索多线程编程的其他方面,如线程同步和互斥锁。我们也可以研究其他操作系统对线程的管理和实现方法。

    两种多线程使用方式演示.rar

    这两种多线程使用方式各有优缺点。线程对象创建方式更加灵活,可以直接控制线程的执行,适合于执行特定的任务;而消息驱动的线程更适用于UI交互,能确保用户界面的响应性。 在"易语言两种多线程使用方式演示源码"中...

    Java特别篇-关于线程创建的三种方式的总结对比

    ### Java特别篇-关于线程创建的三种方式的总结对比 #### 一、常见3种创建线程的方式 ##### (1)方式1:继承Thread类的方式 - **创建步骤**: - 创建一个类,继承`Thread`类。 - 重写`run()`方法,该方法将包含...

    kafka demo ,两种线程消费方式

    在本文中,我们将深入探讨Apache Kafka的两种线程...这两种方式各有优缺点,需要根据实际的性能需求和系统架构来决定。记住,无论选择哪种方式,都需要确保代码的正确性和线程安全性,以及对Kafka消费者API的熟练掌握。

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

    两种线程创建方式的比较 通过实现Runnable接口创建线程和通过继承Thread类创建线程都是创建线程的有效方法。但是,两种方法有其优缺点。 通过实现Runnable接口创建线程的优点是可以更好地实现多线程的并发性和灵活...

    用户级线程的介绍,怎样实现多线程等等

    这种方式允许每个处理器同时执行不同线程,但创建和切换线程的开销较大,且调度策略可能对所有应用通用,不适应特定应用的优化。 综合方法,如Solaris操作系统,结合了用户级线程和内核级线程的优点,通过用户级...

    VC++多线程与单线程

    总结来说,VC++中的多线程和单线程是两种不同的执行模型,各有优缺点。多线程通过并发执行任务提高了程序效率,但需要处理线程同步和通信问题。单线程简单但可能造成阻塞。在实际开发中,理解并熟练运用这些概念和...

    Java多线程-创建多线程的基本方式二:实现Runnable接口

    三、优缺点比较 - **优点** - 实现`Runnable`接口更符合面向接口编程的原则,提高代码的灵活性和可扩展性。 - 可以避免由于Java的单继承特性带来的限制,实现类可以继承其他类。 - **缺点** - 需要创建额外的`...

    常见linux 嵌入式开发C语言笔试面试题

    本文总结了Linux嵌入式开发C语言笔试面试题中的重要知识点,包括进程和线程的基本概念、多进程和多线程的优缺点、进程和线程的状态转换、父进程和子进程的关系、进程通信的方式和优缺点、线程通信的方式和优缺点等。...

    单线程与多线程socket通信

    通过这个Java项目,我们可以学习如何使用Java原生SDK实现Socket通信,理解单线程和多线程在并发处理上的优缺点,以及如何根据实际需求选择合适的通信模型。同时,该项目还可以作为进一步研究高级网络编程、线程管理...

    多线程的运用e语言多线程 e多线程

    二、E语言中的线程创建与管理 在E语言中,创建一个新的线程通常涉及到以下几个步骤: 1. 引入线程库:首先,你需要确保E语言支持多线程,并正确引入相关的库或模块。 2. 定义线程函数:创建一个函数,该函数将作为新...

    单线程与多线程的区别

    - **性能**:虽然多线程可以提高性能,但过度的线程创建和上下文切换会降低系统效率,甚至可能不如单线程。 在实际应用中,选择单线程还是多线程取决于具体需求。例如,对于简单的控制台应用,单线程可能更合适;而...

    python 优缺点和java与python的jar

    在深入了解Python的优缺点以及它与Java之间的交互,特别是涉及到Java的jar文件时,我们首先要明确Python和Java各自的特点。 **Python的优点:** 1. **易学性**:Python的语法简单,适合初学者入门,其“易于阅读”...

    C#跨线程调用控件的四种方式(调用实例源码)

    以上四种方法各有优缺点,根据具体应用场景选择合适的跨线程调用方式。在多线程编程中,理解并熟练掌握这些技巧能帮助我们编写出更加健壮和高效的代码。在实际开发中,应尽量避免直接在非UI线程中修改UI控件,以防止...

    精通java多线程

    这两种方式各有优缺点,实现Runnable接口更有利于资源的共享和代码的复用。 二、线程的启动与运行 启动线程通常通过调用Thread对象的start()方法,该方法会调度线程执行run()方法。需要注意的是,start()方法不能...

    易语言多线程传递文本参数两种方法

    ### 方法一:使用线程创建时传递参数 易语言中,我们可以通过在创建线程时直接传递参数来实现。具体步骤如下: 1. **定义线程函数**:首先,你需要定义一个线程函数,该函数接收参数并进行处理。线程函数的定义...

    一篇文章认识4种Java多线程的创建方式

    总结,Java多线程的四种创建方式各有优缺点,选择哪种方式取决于具体需求。Thread类适合简单场景,Runnable接口更灵活,Callable接口可以获取结果,而ExecutorService提供了更高级的线程管理和控制。了解这些基础...

    vbs的多线程的解决方法

    ### VBS多线程的解决方法 在Visual Basic Script(VBS)中实现多线程并非易事,因为VBS本身并不直接支持多...开发者应根据实际需求选择合适的技术方案,并注意不同方法之间的优缺点,以便更好地利用VBS进行脚本开发。

Global site tag (gtag.js) - Google Analytics