`
schy_hqh
  • 浏览: 556107 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

(多线程)开启多线程的2种方式

 
阅读更多

 

多线程

多个任务相互之间没有先后顺序,为了提高效率,开启多个线程来完成这些任务!

 

好处与弊端:

好处:

提高任务执行效率,如多线程卖票---设计安全问题,需要对资源加锁;

可以让程序"同时"执行不同任务,如杀毒,清理垃圾;

弊端:

线程开启过多,每个线程获得CPU执行权的频率变低,导致程序运行缓慢;

 

所以,在适当情况下,合理使用多线程才是正确的!

 

应用场景

 

1. 不同线程完成不同任务,这些任务之间没有先后顺序的限制

 

2. 多线程对同一个资源进行操作,必须让线程同步,即对资源上锁,才能保证数据正确

 

 继承Thread类,变为线程体系家族的一员

仅为了实现多线程,没必要继承Thread类,因为会将Thread类的方法都继承下来。

所以,不推荐通过继承来实现多线程。推荐实现Runnable接口来操作多线程。

 

package com.gc.thread;

/**
 * 继承Thread类,实现多线程
 *
 */
public class ThreadDemo extends Thread {
	
	public ThreadDemo(String threadName) {
		//为线程指定名称
		super(threadName);
	}
	
	//线程执行的任务
	public void run() {
		for(int i=0;i<10;i++)
			//获取当前线程的名称
			System.out.println(Thread.currentThread().getName()+"---"+i);
	}
	
	
	public static void main(String[] args) {
		ThreadDemo a = new ThreadDemo("Thread A");
		ThreadDemo b = new ThreadDemo("Thread B");
		
		System.out.println("main run...");
		
		//start()开启新的线程,并让线程开始运行
		a.start();
		b.start();
		
		System.out.println("main over...");
	}
}

 

 

 实现Runable接口,扩展类的功能,使其具备多线程运行的功能

 

 

package com.gc.thread;

/**
 * 实现Runnable接口
 * 扩展类的功能,让其具备多线程运行的功能
 *
 */
public class ThreadDemo implements Runnable {
	
	//线程执行的任务
	public void run() {
		for(int i=0;i<10;i++)
			//获取当前线程的名称
			System.out.println(Thread.currentThread().getName()+"---"+i);
	}
	
	
	public static void main(String[] args) {

		System.out.println("main run...");
		
		//将Runnable传入到Thread构造函数中
		Thread t = new Thread(new ThreadDemo());
		t.setName("another Thread");//设置线程名称
		t.start();//开启线程
		
		System.out.println("main over...");
	}
}

 

分享到:
评论

相关推荐

    Qt中利用OpenCV2.4.4多线程打开多摄像机

    模拟了一个16个摄像机的场景,有不开多线程和打开多线程的对比。 可以明显感觉到打开多线程后主界面不卡了。 只是个多线程的小例子,还有很多不足之处,有待各位完善。 注意:pro文件中的include和lib文件目录需要...

    多线程测试(是多线程的测试,对学习多线程的朋友有用)

    在编程领域,多线程是一种常见的技术,它允许程序同时执行多个任务,从而提高系统效率和响应速度。尤其是在处理大量数据、并发操作或者需要进行IO等待时,多线程显得尤为重要。C#作为.NET框架的一部分,提供了丰富的...

    ios多线程开发的常用四种方式和基本使用

    本文将深入探讨四种常用的iOS多线程开发方式:pthread、NSThread、NSOperation及NSOperationQueue,以及Grand Central Dispatch(GCD)。 首先,让我们了解下pthread。pthread是POSIX线程库,它在iOS中被用于跨平台...

    Qt 中利用 OpenCV2.4.4 多线程打开多摄像机

    模拟了一个16个摄像机的场景,有不开多线程和打开多线程的对比。 可以明显感觉到打开多线程后主界面不卡了。 只是个多线程的小例子,还有很多不足之处,有待各位完善。 注意:pro文件中的include和lib文件目录需要...

    qt v4l2多线程视频采集

    【标题】:“Qt V4L2多线程视频采集”是指使用Qt库结合Video for Linux 2 (V4L2)接口,在多个线程中进行视频捕获的技术。V4L2是Linux内核提供的一种标准接口,用于与各种视频设备(如摄像头)交互。而Qt是一个跨平台...

    多线程_按键精灵经典多线程操作_

    在IT行业中,多线程是一种常见的编程技术,它允许程序同时执行多个独立的任务,从而提高计算机系统的效率和响应性。特别是在自动化工具如“按键精灵”中,多线程的应用能够显著提升其性能和实用性。 标题“多线程_...

    Visual Basic 6.0建立多线程程序就是这么简单

    Visual Basic 6.0 (以下简称VB6)作为一种广泛使用的编程语言,支持通过多种方式创建多线程应用程序。本文将详细介绍如何在VB6中实现多线程,并提供两种实用的方法来帮助开发者更好地理解和掌握多线程编程。 #### 二...

    多线程打开TXT

    在IT领域,多线程是一种常见且重要的编程技术,它允许多个任务同时执行,以提高程序的效率和响应速度。在"多线程打开TXT"这个场景中,我们主要探讨的是如何在多个线程中并行处理文本文件,同时提供进度显示功能,如...

    Arduino 使用多线程例子

    这两种任务都需要在短时间内响应,这就需要多线程的处理方式。 首先,我们需要理解Arduino的核心是单核处理器,这意味着同一时间只能执行一条指令。然而,通过使用定时器中断,可以在主循环之外处理一些任务,比如...

    用VB6实现多线程

    在VB6(Visual Basic 6)环境中,多线程是一个重要的技术,它允许程序同时执行多个任务,提高程序的响应性和效率。VB6本身并不直接支持多线程,但可以通过调用Windows API来实现。本篇文章将深入探讨如何在VB6中实现...

    易语言多线程访问网页源码,多线程访问网页,子程序_访问网页(1).zip

    "易语言多线程访问网页源码" 提供了一种利用多线程技术来并发地访问网络资源的方法,这对于需要大量网络请求的项目来说尤其有用。易语言是一种中文编程语言,它以简单直观的语法设计为特点,旨在降低编程的难度,让...

    kafka demo ,两种线程消费方式

    在单个消费者实例中启用多线程消费是提高处理速度的一种方法。这通常通过创建多个线程并在每个线程中使用Kafka Consumer API实现。每个线程将从相同的消费者实例获取分区,从而并行处理消息。以下是一些关键点: - ...

    python selenium chrome 多开 多线程

    本主题聚焦于如何使用Python的Selenium与Chrome浏览器进行多开和多线程操作,结合phantomjs和chromedriver这两个关键组件来实现。首先,让我们详细了解一下这些概念。 1. **Selenium**: Selenium是一个强大的Web...

    java多线程Demo

    在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新的类,让它继承Thread类时,可以通过重写`run()`方法来定义线程执行的任务。然后创建该类的对象,并...

    java多线程分页查询

    ### Java多线程分页查询知识点详解 ...综上所述,多线程分页查询是一种非常有效的技术手段,能够显著提升大规模数据处理时的系统性能。开发者可以根据实际应用场景灵活调整参数配置和算法逻辑,进一步优化查询效率。

    易语言多线程模板源码.rar

    打开这个文件,开发者可以直接查看和学习如何在易语言中实现多线程编程,包括子类化和自定义消息的使用方法。 总的来说,这个模板为易语言用户提供了一个实践多线程编程的良好起点,通过学习和理解其中的源码,...

    易语言多线程版中控

    2. **线程同步**:在多线程环境中,数据共享是常见的需求,但如果不进行适当的同步,可能会出现数据竞争和死锁等问题。易语言提供了多种同步机制,如信号量、互斥量和事件对象,来确保线程间的数据访问安全。 3. **...

    C++ 多线程日志记录

    在C++编程中,多线程日志记录是一种常见的需求,特别是在高并发和实时性要求高的系统中。本文将深入探讨如何使用C++实现多线程日志记录,包括涉及的关键概念、技术以及如何通过提供的文件`log.cpp`、`log.h`和`...

    vs2013创建多线程教程

    VS2013 创建多线程教程 多线程编程是指在一个进程中同时运行多个线程,以提高程序的执行效率和响应速度。在 VS2013 平台中,创建多线程可以使用 CreateThread 函数或 AfxBeginThread 函数。 1. 创建线程结构体 ...

    java多线程读取文件

    Java多线程读大文件 java多线程写文件:多线程往队列中写入数据

Global site tag (gtag.js) - Google Analytics