黑马程序员技术交流社区

标题: 请教一下java多线程的启动方式有哪些? [打印本页]

作者: 冯超    时间: 2013-5-19 10:32
标题: 请教一下java多线程的启动方式有哪些?
本帖最后由 冯超 于 2013-5-19 10:57 编辑

以前学的基础放了。我现在写一个吧。
方式一:
1>继承java.lang.Thread这个类。
2>重载run方法,java.lang.Thread实现Runnable接口,该结构中的run方法定义如下:
public abstract void run();  
          在一个线程中写Thread.start();并可调用run方法。
作者: 刘治广    时间: 2013-5-19 10:43
两种启动方法和你说的差不多,我给你详细的代码你在回忆一下

看附件
作者: 冯超    时间: 2013-5-19 10:54
刘治广 发表于 2013-5-19 10:43
两种启动方法和你说的差不多,我给你详细的代码你在回忆一下

看附件

什么附近?
作者: 冯超    时间: 2013-5-19 10:57
查了下资料
  1. package domain;
  2. //多线程启动方式一
  3. public class test2 extends Thread {
  4.         private String name;

  5.         public test2(String name) {
  6.                 this.name = name;
  7.         }

  8.         public static void main(String[] args) {
  9.                 test2 t = new test2("A");
  10.                 test2 t1 = new test2("B");
  11.                 test2 t2 = new test2("C");

  12.                 t.start();
  13.                 t1.start();
  14.                 t2.start();
  15.         }

  16.         public void run() {
  17.                 for (int i = 0; i < 10; i++) {
  18.                         System.out.println("线程1 :" + name + "在运行");
  19.                 }
  20.         }
  21. }
复制代码
  1. package domain;

  2. //线程启动方式二
  3. class test3 implements Runnable {
  4.         private String name;

  5.         public test3(String name) {
  6.                 this.name = name;
  7.         }
  8.         public static void main(String[] args) {
  9.                 test3 t = new test3("A");
  10.                 test3 t1 = new test3("B");
  11.                 test3 t2 = new test3("C");
  12.        
  13.                 Thread thread1 = new Thread(t);
  14.                 Thread thread2 = new Thread(t1);
  15.                 Thread thread3 = new Thread(t2);
  16.                 thread1.start();
  17.                 thread2.start();
  18.                 thread3.start();
  19.         }
  20.         @Override
  21.         public void run() {
  22.                 // TODO Auto-generated method stub
  23.                 for (int i = 0; i < 10; i++) {
  24.                         System.out.println("线程2" + name + "在运行");
  25.                 }
  26.         }
  27.        
  28. }
复制代码
无论是哪种方法都必须是用Thread.start();来启动线程。
作者: 刘治广    时间: 2013-5-19 16:25
test3 t = new test3("A");
test3 t1 = new test3("B");
test3 t2 = new test3("C");
这里声明一次就可以了,至于线程名字可以这样
Thread thread1 = new Thread(t,"A");
Thread thread2 = new Thread(t1,“B”);
Thread thread3 = new Thread(t2,“C”);


修改后
test3 t = new test3();
Thread thread1 = new Thread(t,"A");
Thread thread2 = new Thread(t1,"B" );
Thread thread3 = new Thread(t2,"C" );
作者: 冯超    时间: 2013-5-19 21:20
刘治广 发表于 2013-5-19 16:25
test3 t = new test3("A");
test3 t1 = new test3("B");
test3 t2 = new test3("C");

谢谢!····························
作者: 刘治广    时间: 2013-5-19 22:14
呵呵,大家互相学习。最好能来点技术分,嘿嘿




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2