立即注册
 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广州大学城网业务调整

[Java/JSP] Java多线程编程—线程的创建 [复制链接] qrcode

查看: 2980 | 回复: 0

大法师的 该用户已被删除
发表于: 2013-1-8 14:26:40 | 显示全部楼层

  在java语言出现之前,多线程是通过操做硬件等方法实现的,尽管这是一种有用的方法,但编出的程序很难移植,所以程序员往往为此付出不小的代价。Java是第一个从语言级实现多线程的方法。由于java实现了多线程,使得利用java编写多线程的程序也比较简单,因此这也成了java语言相比于其他语言的一个优势。另外java是运行在虚拟机上的,可移植性强,这个特点和简单的多线程编写配合,使的java的优势更明显。扯的有点远了,回来,下面介绍线程的创建。
在创建我们自己写的线程的时候,java就已经先创建了一个线程,就是我们运行主函数main的线程。有时候我们可能会需要得到当前正在运行的线程,这里我们就可以用Thread类中的静态方法currentThread(),这个函数返回的是一个Thread类的实例的引用,我们可以调用getName()方法获得当前的线程的名字(具体的方法请读者自己查看java的帮助文档)。

下面我们举一个例子:
public classaaa
{
   public static void main(String[] args)
   {
     System.out.println(Thread.currentThread().getName());
   }

}//main

下面我们介绍java中怎么创建多线程,java提供了两种创建多线程的方法,如下:
(1)从Thread类继承;
(2)实现Runnable接口。
对于这两种创建线程的方法,都必须实现一个run()方法,因为在我们创建线程后,调用start()启动线程之后,调用的是run()方法。
这里多说一句,在java中有许多的类跟接口可以实现同样的功能,有些人就感觉这个多此一举。但是认真想想,java为了安全的考虑只支持单继承,但是我们的实际开发中,课程需要同时继承两个类,但是java又是不允许。这里接口就发挥作用了,我们可以继承一个类,同时实现一个或多个接口(对于接口实现的个数java中没有限制)。
下面介绍第一个创建线程的方法,我们还是以例子的形式给出:

public classaaa
{
   public static void main(String[] args)
   {
     System.out.println(Thread.currentThread().getName());
      MyThread mt = new MyThread();//创建MyThread类的一个实例,并把它赋给mt
      mt.start();//启动线程
   }
}
class MyThreadextendsThread
{
   public void run()
   {
      System.out.println(Thread.currentThread().getName());
   }
}

上面的例子显示了创建线程的第一方法,多说一句,有时候我们需要在启动线程的时候,去做一些别的工作,这些工作不是我们在创建对象的时候做的,我们可以重写Thread类的start()方法,就像下面一样
public void start(){
   自己想要做的工作
   Super.start();
}

下面我们介绍第二种创建线程的方法,还是以例子的形式给出:
public classaaa
{
   public static void main(String[] args)
   {
     System.out.println(Thread.currentThread().getName());
      MyThread mt = new MyThread();//创建MyThread类的一个实例,并把它赋给mt
      Thread t = new Thread(mt);//创建一个Thread类的对象,并且将我们实现了run()方法的MyThread类的对象的实例mt作为参数传入
      t.start();//启动线程
   }
}
class MyThreadimplementsRunnable
{
   public void run()
   {System.out.println(Thread.currentThread().getName());}
}//main
Thread-0
在我实现runnable接口创建线程的时候,我们必须将我们自己写的类的实例作为参数传给一个Thread类的对象,然后在调用该对象的start()方法。
这里简单的介绍了一下,希望对大家有帮助,如果有错或者不妥当的地方希望指出。

QQ 744437114
  疯狂软件官网:http://www.fkjava.org
  疯狂java视频 android视频:http://www.fkjava.org/video.html
跳转到指定楼层
快速回复 返回顶部 返回列表