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()等待。

posted @ 2019-09-26 16:08  Scionx  阅读(266)  评论(0)    收藏  举报