`
yesjavame
  • 浏览: 687924 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

多线程编程 深入理解线程对象和线程

阅读更多

深入理解线程对象和线程

让我们先以C++来说明,然后我们转到JAVA上来,因为c++对对象的销毁更直接一些:
到目前为止,C++还没有直接支持多线程,意思是说多线程不是C++标准库,这也是JAVA程序员对于
多线程编程比C++程序更精通一些(这是普通来说的,你不要拿一个C++多线程高手和普通的JAVA程
序员比),因为JAVA程序从一开始就接收了多线程的思想并不断地训练.

目前最有可能被下一代C++标准采用的多线程库是ZThread,或者我们可以直接用VC的CWinThread来
举例,它们都是标准C++上对线程的扩展实现.


class MyRunnable: public ZThread::Runnable{
public:
void Run(){
for(int i = 0;i< 100000;i++){
//输出;
//sleep;
}
}
~MyRunnable(){}
}

for(int i = 0;i< 10;i++){
Thread zt(new MyRunnable());
}
我们非常清楚地看到,在C++中,循环内的变量在跳出循环后,就会被直接从栈中自动销毁,但是线程却
实实在在地在工作.

这在理论上与C++是相悖的,一个对象本身已经从栈中退出,那么如何运行它的代码?
如果我一开始用JAVA来举例,你可能会说虽然对象跳出了循环但它还在垃圾回收器中,等到线程执行
完成后才被回收.但我们用C++来说明,基于栈的变量zt每次跳出循环就一定被从栈中销毁,那么线程
又如果运行下去呢?


这正是我在之前一直强调的两个概念,线程对象和线程的区别.一个线程对象,在开始运行的时候(JAVA
中从调用线程对象的start(),ZThread中构造函数完成后会直接启动),就将当前线程所要执行的任务
及相关上下文注册到线程处理系统内.线程对象只是向这个处理系统注册的句柄,注册后如何执行线程
对象要完成的操作那就由线程处理系统来统一管理了,这里线程对象已经完成了它的使命,无论是直接
从栈中销毁还是直接被垃圾回收器回收,还是继续存放在原来的内存位置,都不影响线程处理系统来处
理要完成的操作.

分享到:
评论

相关推荐

    Linux下C语言多线程编程实例

    Linux 下 C 语言多线程编程实例 Linux 下的多线程编程是一种非常重要的技术,在...本实例提供了一个非常实用的多线程编程示例,帮助我们更好地理解多线程编程的基本概念和技术,并且可以作为实际应用的参考和借鉴。

    Java多线程编程深入详解.docx

    Java多线程编程深入详解 多线程编程是Java编程语言中的一种...Java多线程编程是一种强大而复杂的技术,需要深入理解和实践。通过本文,我们了解了多线程编程的基础知识和高级技术,掌握了多线程编程的要领和实践经验。

    C++面向对象多线程编程

    《C++面向对象多线程编程》是一本深入探讨如何在C++环境中利用面向对象特性进行多线程程序设计的专业书籍。它旨在帮助C++程序员掌握如何构建高效、稳定的多线程架构,以及如何实现增量多线程编程技术。通过本书,...

    C#多线程编程实例实战.pdf

    C#多线程编程实例实战是指在C#语言中实现多线程编程的实例和实战经验。多线程编程是指在同一个进程中创建多个线程,以便提高程序的执行效率和响应速度。在C#语言中,可以使用Thread类和线程池来实现多线程编程。 ...

    linux系统下的多线程编程深入

    linux系统下的多线程编程深入

    Windows多线程编程技术与实例(C++)(PDF)

    《Windows多线程编程技术与实例(C++)》是一本深入探讨Windows环境下多线程编程的书籍,特别适合正在学习或已经从事C++多线程开发的人员阅读。本书通过丰富的实例,详细讲解了如何在Windows操作系统中利用C++进行...

    linux多线程编程.pdf

    Linux多线程编程不仅需要对pthread库函数有深入的理解,还需要掌握线程同步和通信的机制,比如互斥锁(mutexes)、条件变量(condition variables)等,以便协调多个线程对共享资源的访问,防止数据竞争和条件竞争等...

    JAVA多线程编程技术PDF

    在Java编程领域,多线程是一项至关重要的技术,它允许程序同时执行多个任务,从而提高系统资源的利用率和程序的响应速度...通过深入学习这份资料,开发者可以全面掌握Java多线程编程技术,提升程序的并发性能和稳定性。

    多线程编程(完整版)

    在实际应用中,多线程编程不仅涉及到线程的创建和管理,还涉及到线程同步和通信,如使用临界区、互斥量、事件对象等同步机制来保护共享资源,确保线程安全访问。此外,还需要考虑线程优先级、线程局部存储、线程池等...

    c++多线程编程的十个例子

    以下是对“C++多线程编程的十个例子”的详细讲解,这些例子将帮助你在Windows环境下深入理解和应用多线程。 1. **创建线程** C++11引入了`std::thread`库来创建和管理线程。例如,你可以通过传递函数或成员函数...

    汪文君JAVA多线程编程实战(完整不加密)

    这本书旨在帮助Java开发者深入理解和熟练掌握多线程编程技术,提升软件开发的效率和质量。在Java平台中,多线程是并发处理的基础,对于构建高效、可扩展的系统至关重要。 Java多线程允许程序同时执行多个独立的代码...

    C#多线程编程实战完整源码

    C#多线程编程是开发高效、响应迅速的软件应用的关键技术之一,尤其在现代计算环境中,多核处理器和并发处理的需求日益增加。本资源"《C#多线程编程实战》完整源码"提供了丰富的实例,适用于学习和实践C#中的多线程...

    深入浅出Win32多线程编程

    《深入浅出Win32多线程编程》是一本专为Windows平台开发者设计的书籍,旨在帮助读者理解和掌握在Win32环境下进行多线程编程的技术与实践。多线程编程是现代软件开发中的重要组成部分,尤其是在处理高性能计算、并发...

    sun 多线程编程指南

    整体而言,该文档为多线程编程提供了详尽的指南,从基础概念到具体实现技术都有介绍,对于希望深入了解多线程编程的专业人员来说,是一本极具价值的参考资料。由于文档篇幅较长,上述总结仅为部分内容的摘要,并未...

    MFC多线程编程

    MFC库是Visual C++提供的一种面向对象的类库,它简化了Windows API的使用,包括多线程编程。多线程在现代软件开发中扮演着重要角色,能够提高程序的响应速度和效率,尤其是在执行长时间运算或异步任务时。 **一、单...

    深入学习:Java多线程编程

    《深入学习:Java多线程编程》是一本专注于Java并发技术的专业书籍,旨在帮助开发者深入理解和熟练运用Java中的多线程编程。Java多线程是Java编程中的核心部分,尤其在现代高性能应用和分布式系统中不可或缺。理解并...

Global site tag (gtag.js) - Google Analytics