在java中实现多线程有两种方法
1)继承Thread类
2)实现Runnable接口
..............................
看代码
- class MultiThread
- {
- public static void main(String[] args)
- {
- Thread mte=new Thread(new MyThreadEx());
- mte.start();
- Thread mti=new Thread(new MyThreadIm());
- mti.start();
- System.out.println("Main Thread name is:"+Thread.currentThread().getName());
- }
- }
- //继承Thread类
- class MyThreadEx extends Thread
- {
- public MyThreadEx()
- {
- }
- public void run()
- {
- System.out.println("extends Thread");
- }
- }
- //实现Runnable接口
- class MyThreadIm implements Runnable
- {
- public MyThreadIm()
- {
- }
- public void run()
- {
- System.out.println("implements Runnable");
- }
- }
class MultiThread { public static void main(String[] args) { Thread mte=new Thread(new MyThreadEx()); mte.start(); Thread mti=new Thread(new MyThreadIm()); mti.start(); System.out.println("Main Thread name is:"+Thread.currentThread().getName()); } } //继承Thread类 class MyThreadEx extends Thread { public MyThreadEx() { } public void run() { System.out.println("extends Thread"); } } //实现Runnable接口 class MyThreadIm implements Runnable { public MyThreadIm() { } public void run() { System.out.println("implements Runnable"); } }
-----------------------------------------------------------------------------------------------------------------
而在C#中,系统已经为我们写好委托,方法体可以由我们自己来自由地实现,
而C#里线程又分两种,1)带参数的和2)不带参数的
事实上,C#细分的话,带参数的和不带参数的都分别一个重载方法,所以加起来共四个
看MSDN:
名称 | 说明 |
---|---|
Thread (ParameterizedThreadStart) | 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托。 |
Thread (ThreadStart) | 初始化 Thread 类的新实例。 由 .NET Compact Framework 支持。 |
Thread (ParameterizedThreadStart, Int32) | 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小。 |
Thread (ThreadStart, Int32) | 初始化 Thread 类的新实例,指定线程的最大堆栈大小。 由 .NET Compact Framework 支持。 |
..............................
再看代码实现
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Threading;
- namespace ThreadTest
- {
- class Program
- {
- static void Main(string[] args)
- {
- //不带参数的线程实现
- Thread thdNoparam = new Thread(new ThreadStart(NoParamsMethod));
- thdNoparam.Start();
- //带参数的线程实现
- Thread thdParam = new Thread(new ParameterizedThreadStart(ParamsMethod));
- thdParam.Start("Thread implement with params !");
- }
- //方法的实现
- static void NoParamsMethod()
- {
- Console.WriteLine("Thread implement with no params !");
- }
- //方法的实现
- static void ParamsMethod(object obj)
- {
- //do something with obj
- Console.WriteLine(obj.ToString());
- }
- }
- }
using System; using System.Collections.Generic; using System.Text; using System.Threading; namespace ThreadTest { class Program { static void Main(string[] args) { //不带参数的线程实现 Thread thdNoparam = new Thread(new ThreadStart(NoParamsMethod)); thdNoparam.Start(); //带参数的线程实现 Thread thdParam = new Thread(new ParameterizedThreadStart(ParamsMethod)); thdParam.Start("Thread implement with params !"); } //方法的实现 static void NoParamsMethod() { Console.WriteLine("Thread implement with no params !"); } //方法的实现 static void ParamsMethod(object obj) { //do something with obj Console.WriteLine(obj.ToString()); } } }
-----------------------------------------------------------------------------------------------------------------
各有各的特点