Java多线程(multithreading in Java)
多线程(multithreading)是Java的主要功能之一。它允许一部分、或者多部分程序并行。
多线程在Java中主要有两种实现方法:
1. 继承Thread的类;
2. 使用Runnable的接口;
对于第一种方法,格式如下:
class MyClass extends Thread
{
@Override
public void run()
{
try
{
}
catch (Exception e)
{
}
}
}
假设你的main方法在名为Drive的class中,你可以这样启动一个线程:
public class Drive
{
public static void main(String[] args)
{
MyClass obj = new MyClass();
obj.start();
}
}
关于以上代码的一些解释:
1. 你需要一个class,并且继承Thread:
class MyClass extends Thread{}
2. 你必须override里面的run();
3. run()里面必须要有处理exception的机制,一般用try-catch去处理,把你要让线程运行的那部分程序写在try括号里;
4. 在main()里面先创建一个该class的实例,然后调用start()方法;
对于第二种方法,格式如下:
class MyClass implements Runnable
{
public void run()
{
try
{
}
catch (Exception e)
{
}
}
}
同样地,假设你的main方法在名为Drive的class中,你可以这样启动一个线程:
class Drive
{
public static void main(String[] args)
{
Thread object = new Thread(new MyClass());
object.start();
}
}
关于以上代码的一些解释:
1. 与第一种方法相同,线程程序放在try括号里;
2. 在main方法里,创建一个MyClass的实例,然后放到Thread的参数里,再创建一个Thread的实例,然后调用start()方法;
比较:
两种方法都可以创建线程,用哪种?
推荐使用第二种,因为如果我们用第一种,继承了Thread以后就不能再继承别的类了,因为Java不支持多继承,一个子类只能有一个父类;如果使用第二种,使用的是Runnable接口,不算继承,所以它仍然可以继承别的父类。
第一种方法一点好处也没有吗?
也不是。第一种方法直接继承Thread的class以后可以直接使用其自带的一些方法:yield(),interrupt()等待。
浙公网安备 33010602011771号