Java多线程

来源:互联网 发布:mac默认网关 编辑:程序博客网 时间:2024/05/19 10:55

在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。

对于直接继承Thread的类来说,代码大致框架是:

class 类名 extends Thread{方法1;方法2;…public void run(){// other code…}属性1;属性2;… }
一个简单的例子:

class hello extends Thread {     public hello() {     }     public hello(String name) {        this.name = name;    }     public void run() {        for (int i = 0; i < 5; i++) {            System.out.println(name + "运行     " + i);        }    }     public static void main(String[] args) {        hello h1=new hello("A");        hello h2=new hello("B");        h1.run();        h2.run();    }     private String name;}

【运行结果】:

A运行     0

A运行     1

A运行     2

A运行     3

A运行     4

B运行     0

B运行     1

B运行     2

B运行     3

B运行     4

我们会发现这些都是顺序执行的,说明我们的调用方法不对,应该调用的是start()方法。

当我们把上面的主函数修改为如下所示的时候:

public static void main(String[] args) {        hello h1=new hello("A");        hello h2=new hello("B");        h1.start();        h2.start();    }

然后运行程序,输出的可能的结果如下:

A运行     0

B运行     0

B运行     1

B运行     2

B运行     3

B运行     4

A运行     1

A运行     2

A运行     3

A运行     4

因为需要用到CPU的资源,所以每次的运行结果基本是都不一样的,呵呵。

注意:虽然我们在这里调用的是start()方法,但是实际上调用的还是run()方法的主体。


通过实现Runnable接口:

 

大致框架是:

class 类名 implements Runnable{方法1;方法2;…public void run(){// other code…}属性1;属性2;… }

一个小例子:

class hello implements Runnable {     public hello() {     }     public hello(String name) {        this.name = name;    }     public void run() {        for (int i = 0; i < 5; i++) {            System.out.println(name + "运行     " + i);        }    }     public static void main(String[] args) {        hello h1=new hello("线程A");        Thread demo= new Thread(h1);        hello h2=new hello("线程B");        Thread demo1=new Thread(h2);        demo.start();        demo1.start();    }     private String name;}

【可能的运行结果】:

线程A运行     0

线程B运行     0

线程B运行     1

线程B运行     2

线程B运行     3

线程B运行     4

线程A运行     1

线程A运行     2

线程A运行     3

线程A运行     4



原创粉丝点击