进程:执行中的程序(程序是静态的概念,进程是动态的概念)。
当使用第一种方式生成线程对象时,我们需要重写run方法,因为Thread类的run方法此时什么事情也不做,如下为Thread的run方法。
public void run() {
if (target != null) {
target.run();
}
}
使用第二种方式生成线程对象:我们需要实现Runnable接口的run方法,然后使用new Thread(new MyThread())来生成线程对象(MyThread自定义的实现Runnable接口的类),这时线程对象的run方法会调用MyThread类的run方法,这样我们编写的run方法就执行了。
将我们希望运行的代码放入run方法中,然后通过start方法来启动线程,start方法首选为线程的执行准备好系统资源,然后再去调用run方法。当某个类继承Thread类后,该类就叫做一个线程类。
package com.test.thread;
public class ThreadTest {
public static void main(String[] args) {
Thread1 thread1 = new Thread1();
thread1.start();
Thread2 thread2 = new Thread2();
thread2.start();
}
}
class Thread1 extends Thread{
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("hello world "+i);
}
}
}
class Thread2 extends Thread{
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("welcome "+i);
}
}
}
对于单核CPU来说,某一时刻只能有一个线程在执行(微观串行),从宏观角度来看,多个线程在同时执行(宏观并行)。
对于双核或双核以上的CPU来说,可以做到真正的微观并行。
package com.test.thread;
public class ThreadTest {
public static void main(String[] args) {
Thread myThread = new Thread(new MyThread());
myThread.start();
}
}
class MyThread implements Runnable{
public void run() {
for(int i= 0;i<10;i++){
System.out.println("hello world "+i);
}
}
}
或者这样写
package com.test.thread;
public class ThreadTest {
public static void main(String[] args) {
Thread myThread = new Thread(new Runnable() {
public void run() {
for(int i = 0;i<10;i++){
System.out.println("hello world "+i);
}
}
});
myThread.start();
}
}
当生成一个线程时,如果没有为其设定名称,那么Thread类将会为此线程设定一个默认的名称,使用如下形式:
Thread-number,该number是自动增加的,并被所有的Thread对象共享(因为它是static成员变量)。也可以使用Thread(String name)构造函数来设置名称,或使用setName(String name)来设置名称。
分享到:
相关推荐
VB6本身并不直接支持多线程,但可以通过调用Windows API来实现。本篇文章将深入探讨如何在VB6中实现多线程以及涉及的关键知识点。 首先,我们要理解什么是线程。线程是操作系统分配CPU时间的基本单位,一个进程可以...
在深入探讨VB如何实现多线程之前,有必要先了解一些基本的概念。 **多线程定义**:多线程是指在一个程序中同时执行多个线程的能力。每个线程都代表了一个独立的执行路径,能够在同一时间处理不同的任务。这对于提高...
本文将详细讲解如何通过实现`Runnable`接口创建多线程,以及这种方式相较于继承`Thread`类的优势。 一、实现Runnable接口创建多线程 1. **步骤** 当一个类需要继承其他类而不能直接继承`Thread`类时,可以选择...
下面将详细介绍C++实现多线程文件复制的知识点。 一、多线程文件复制的基本概念 多线程文件复制是指在文件复制过程中,使用多个线程同时复制文件,以提高复制速度。这种技术可以充分利用多核CPU的计算能力,提高...
本文将深入探讨E语言多线程的基本概念、优势、实现方式以及常见问题。 一、多线程概述 多线程是操作系统提供的一个特性,它允许多个任务在单个进程中并行执行。在E语言中,多线程能够帮助开发者在处理大量I/O操作、...
在编程领域,多线程是实现并发执行任务的重要方式,特别是在GUI应用如Qt5中,多线程可以提高程序的响应速度和效率。本主题主要关注如何使用Qt5的QSemaphore类来解决经典的生产者-消费者问题。QSemaphore是一种同步...
实现多线程的方式有多种,例如在一个servlet中全局保存请求,然后由单例servlet处理,或者将请求放入队列,由单线程调度处理。 用户级线程(User-Level Threads, ULTs)是由应用程序或线程库负责管理和调度的线程,...
在本场景中,我们讨论的是一个模拟火车站售票系统的多线程实现。这个系统通过多线程来模拟现实中售票窗口的并发操作,提高系统效率,提供更好的用户体验。 **线程的创建** 线程是操作系统分配处理器时间的基本单位...
本资源包含六个C#.NET多线程的实例,涵盖了多线程的基本使用到更高级的概念,如线程互斥。以下是这些实例可能涉及的关键知识点: 1. **线程创建**:C#中创建线程主要有两种方式,一是通过`System.Threading.Thread`...
【Java多线程-创建多线程的基本方式一:继承Thread类】 在Java编程中,多线程是一种并发执行任务的机制,它允许多个任务在同一时间运行,从而提高程序的效率和响应速度。Java提供了多种创建多线程的方式,其中最...
在Java编程语言中,实现多线程文件传输是一种优化程序性能、提高系统资源利用率的有效方法。多线程允许我们同时处理多个任务,这对于大文件传输或需要并行处理的场景尤其有用。本篇文章将深入探讨如何使用Java实现多...
1. 多线程基础:在易语言中,多线程可以通过创建并启动线程对象来实现。线程是程序执行的基本单元,每个线程都有自己的执行栈,可以独立地执行一段代码。多线程可以用于实现并发操作,例如在后台加载数据、执行耗时...
以上就是MFC中利用多线程实现定时器的基本步骤。这种方法的优点是可以避免因`ontimer`事件阻塞主线程,使得程序更加响应。当然,实际开发中还需要考虑线程安全、资源管理等问题,确保代码的稳定性和效率。通过不断...
在VB(Visual Basic)编程环境中,实现多线程是一项重要的技术,它允许程序同时执行多个独立的任务,提高程序的响应速度和效率。VB虽然没有内置的多线程支持,但可以通过使用API函数或者.NET Framework提供的System....
在C#中,实现多线程有多种方式,如`Thread`类、`Task`类以及异步编程模型(`async/await`)。但这里我们关注的是线程间的同步,特别是互斥锁。 以下是一个简单的互斥访问同一变量的C#代码示例: ```csharp public ...
《多线程实现的模拟QQ程序详解》 在计算机编程领域,多线程技术是一种重要的并发执行机制,它允许多个任务在同一时刻运行,极大地提高了程序的效率和响应性。本篇文章将深入探讨如何利用多线程技术实现一个模拟QQ...
本文将详细介绍如何利用MyBatis结合多线程和CountDownLatch闭锁来实现数据的批量插入。 首先,我们来看`mybatis批处理`。MyBatis的批处理功能允许我们在一次数据库连接中执行多条SQL语句,从而减少了数据库连接的...
在MFC中实现多线程编程是提升程序性能、实现并发处理的重要手段。对于初学者和有经验的开发者来说,理解和掌握MFC多线程编程都具有很大的价值。 在Windows操作系统中,线程是程序执行的基本单位,每个线程都有自己...
本文将深入探讨如何使用Microsoft Foundation Classes (MFC) 库在C++中实现一个多线程的秒表应用。MFC是微软为Windows平台开发的C++类库,它提供了一种面向对象的方式来构建用户界面和应用程序。 首先,让我们理解...
VB中的多线程主要通过两种方式实现:MTA(多线程 apartments)和STA(单线程 apartments)。VB6默认使用STA模型,这意味着每个窗口对象(如控件)都在一个单独的线程中运行。而MTA则允许多个线程共享同一公寓,适合...