我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java、C#线程模型分析对比 (转)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java、C#线程模型分析对比 (转)

Java、C#线程模型分析对比 (转)[@more@]

  Java、C#都提供了面向对象的线程模型。它们都抽象出了线程对象,而开发人员在某个类的成员方法中实现线程应用逻辑。通过分离线程对象和线程方法,简化了线程应用逻辑的开发。

在Java中开发线程有两种方法。第一种方法是由Thread派生一个线程类,实现run方法,并调用Thread.start方法启动线程,如:

class MyThread extends Thread { //创建线程类XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

public void run() {…} //线程方法

}

MyThread aThread = new MyThread(); //创建一个线程对象

aThread.start() ; //启动线程

第二种方法是通过实现Runable接口创建一个可执行类,并利用一个Thread对象来启动线程,如:

  class MyRunable implements Runnable{

public void run() {…} //线程方法

}

MyRunable aRunable = new MyRunable(); //创建一个可执行对象

  Thread aThread = new Thread(aRunable);    //创建一个线程对象,并与可执行对象关联

  aThread.start()  ;  //启动线程

C#的线程模型将线程对象和线程方法分离得更彻底,它可将任何一个原型为void( )的公有类成员方法(静态或非静态)用作线程方法;另外线程启动时还指定一个提供线程方法的对象(该对象提供线程应用逻辑所需的各种信息)。下面是一个简单的例子:

using System;

using System.Threading;

public class ThreadWork {  //ThreadWork不显式继承任何类,DoWork可作为线程方法

  public void DoWork() { for(int i = 0; i<10 ;i++) Console.WriteLine("Working thread..."); }   //End of DoWork

}   //End of ThreadWork

class ThreadTest{

  public static void Main() {  //将对象aThread 的DoWork方法作为线程方法执行

ThreadWork aThread = new ThreadWork();

ThreadStart myThreadDelegate = new ThreadStart(aThread.DoWork);  //指定线程方法

Thread myThread = new Thread(myThreadDelegate);  //创建线程对象

myThread.Start();  //启动线程

  }   //End of Main

  }  //End of  ThreadTest

开发人员最关心的是如何实现线程方法。Java线程模型提供两种方法来实现线程方法,重载Runable.run方法或者重载Thread.run方法。开发人员可根据具体的应用场合选择合适的基类(Runable或者Thread),这是Java线程模型的一个优点。另外可以看到,Java线程模型中只能在Runable或Thread的子类中实现线程方法(即子类的run方法),而且每个子类只能实现一个线程方法。C#线程模型由于允许将任何一个原型为void( )的公有类成员方法(静态或非静态)用作线程方法,因此它实际上允许在任何一个类(不要求这个类是某个类的子类)中实现线程方法,而且同一个类中可以实现多个线程方法。面向对象的线程模型有两个要素:线程对象和线程方法。线程对象封装线程本身相关的逻辑,如线程的创建、销毁等等。而线程方法就是线程对象实际执行的任务。利用面向对象线程模型进行多线程开发时,这样来思考问题会更自然:现在我有一项工作(即设计了一个线程方法),找一个工人(线程对象)来完成这个工作吧。所以我们认为C#的线程模型更灵活,而这种灵活性使得开发人员能够将程序结构组织的更加清晰、合理。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java、C#线程模型分析对比 (转)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java、C#线程模型分析对比 (转)

Java、C#线程模型分析对比 (转)[@more@] Java、C#都提供了面向对象的线程模型。它们都抽象出了线程对象,而开发人员在某个类的成员方法中实现线程应用逻辑。通过分离线程对象和线程方法,简化了线程应用逻辑的开发。在Java中开
2023-06-03

Java IO模型与Java网络编程模型的对比

本篇内容主要讲解“Java IO模型与Java网络编程模型的对比”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java IO模型与Java网络编程模型的对比”吧!IO模型介绍作者:cooffee
2023-06-02

对比Golang协程和线程的分析

Golang协程与线程的差异解析在现代编程语言中,多线程并发已经成为一种常见的编程模式,用于提高程序的性能和响应能力。然而,线程的创建和管理往往需要消耗大量的系统资源,同时在编程复杂性和错误处理上也存在一些困难。为了解决这些问题,一种轻量
对比Golang协程和线程的分析
2024-01-24

Golang中线程与协程的对比分析

Golang中线程与协程的对比分析在现代的软件开发中,多线程编程是一项非常常见的任务。而随着硬件技术的发展,多核处理器已经成为了主流,因此利用多线程并行处理数据已经成为了提高程序性能的重要手段。然而,传统的多线程编程中,线程的创建、销毁和
Golang中线程与协程的对比分析
2024-02-29

Java中对HashMap的深度分析与比较(转)

Java中对HashMap的深度分析与比较(转)[@more@]在Java的世界里,无论类还是各种数据,其结构的处理是整个程序的逻辑以及性能的关键。由于本人接触了一个有关性能与逻辑同时并存的问题,于是就开始研究这方面的问题。找遍了大大小小的
2023-06-03

Go语言中协程和线程的对比分析

Go语言协程(Goroutine)与线程(Thread)是并发编程中常见的两种概念,它们都可以用来处理并发任务,但在实现方式、调度方式、资源消耗等方面有着显著的不同。本文将深入探讨Go语言协程和线程的异同,并通过具体的代码示例来加深理解。
Go语言中协程和线程的对比分析
2024-02-25

Java语言深入 多线程程序模型研究(转)

Java语言深入 多线程程序模型研究(转)[@more@]多线程是较复杂程序设计过程中不可缺少的一部分。为了提高应用程序运行的性能,采用多线程的设计是一种比较可行的方案。本文通过介绍使用Java编写的扫描计算机端口的实例,来说明多线程设计中
2023-06-03

Netty、MINA、Twisted中线程模型的示例分析

这篇文章主要介绍了Netty、MINA、Twisted中线程模型的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。要想开发一个高性能的TCP服务器,熟悉所使用框架的线程
2023-06-04

Java并发编程之volatile与JMM多线程内存模型实例分析

本篇内容主要讲解“Java并发编程之volatile与JMM多线程内存模型实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java并发编程之volatile与JMM多线程内存模型实例分析”
2023-06-30

Goroutine与Coroutine的对比分析:如何选择最佳并发模型?

Goroutine与Coroutine的对比分析:如何选择最佳并发模型?随着计算机技术的不断发展,多任务处理和并发编程成为了软件开发中的一个重要议题。在并发编程中,Goroutine和Coroutine是两种常见的并发编程模型,它们都能够
Goroutine与Coroutine的对比分析:如何选择最佳并发模型?
2024-03-12

C语言并发编程模型实例分析

这篇文章主要介绍“C语言并发编程模型实例分析”,在日常操作中,相信很多人在C语言并发编程模型实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言并发编程模型实例分析”的疑惑有所帮助!接下来,请跟着小编
2023-06-30

Java中观察者模式与委托的实例对比分析

这篇文章主要介绍“Java中观察者模式与委托的实例对比分析”,在日常操作中,相信很多人在Java中观察者模式与委托的实例对比分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中观察者模式与委托的实例对
2023-06-30

Android编程中关于单线程模型的理解与分析

本文讲述了Android编程中关于单线程模型的理解与分析。分享给大家供大家参考,具体如下: 当一个Android程序启动时,Android系统会同时启动一个对应的主线程(Main Thread)。 由于这个主线程(Main Thread)主
2022-06-06

Android应用程序模型之应用程序,任务,进程,线程分析

本文讲述了Android应用程序模型之应用程序,任务,进程,线程。分享给大家供大家参考,具体如下: 大多数操作系统,在应用程序所寄存的可执行程序映像(如Windows系统里的.exe)、它所运行的进程以及和用户交互的图标和应用之间有一种严格
2022-06-06

Java中单例模式与多线程的示例分析

这篇文章主要介绍了Java中单例模式与多线程的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。单例模式与多线程单例模式就是全局唯一但是所有程序都可以使用的对象写单例模式
2023-06-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录