Java 里的thread (线程)简介
作者:网络转载 发布时间:[ 2014/2/19 9:20:48 ] 推荐标签:线程 Java 程序
6.2.2 启动线程: 新建1个上述类的对象s, 在新建1个类Thread的对象t, 把s作为一个参数用于t的构造方法. 并执行t.start()
貌似比方式一复杂.
其实非如下:
new Thread(new M_thrd_2()).start()
例子:
public class M_thread_expl2{
public static void g(){
M_thrd_2 s = new M_thrd_2();
s.id = 1;
Thread t1 = new Thread(s);
t1.start();
Thread t2 = new Thread(s);
s.id = 2;
t2.start();
}
}
在g() 函数中,
首先新建1个类M_thrd_2的 对象s.
并利用s作为参数 建立了两个线程类Thread的对象t1 和 t2. 并启动这两个线程.
注:
1. 这个例子中有3个线程, 其中1个主线程(也是g() 函数所在的线程). 开启了两个子线程, 该两个子线程都在不断循环输出信息到屏幕上.
2. Thread(object ob) 是1个属于类Thread的构造方法, 其中的对象ob 必须实现Runnable 接口.
3. 这个例子执行时 , 第一个t1首先会输出id = 1, 但是当第二个线程t2开始执行后, t1会输出id=2, 因为t1, 和t2都是利用同1个对象建立的.
也是说, 这个对象的变动会同时影响两个线程.
输出如下:

6.3 两种方式的区别
1. 方式1是创建继承类Thread的派生类, 方式2是创建实现Runnable接口的类.
2. 启动方式: 方式1是直接调用业务类的对象的start()方法, 方式2是利用业务类类的对象新建1个类Thread的对象, 并调用该对象的start()方法.
3. 如果要启动多个线程, 通过方式1需要新建多个不同业务类的对象, 方式2 则可以通过业务1个对象 构建多个Thread类对象, 但是业务对象的变动会同时影响对应的多个线程.
七. 关于线程的一些常用方法介绍.
7.1 run()
我们要吧线把要执行的业务代码写入这个方法. 上面提过了. 注意, 如果我们直接执行1个线程对象的run()方法可以合法的, 但是仍然是在当前线程内执行, 并没有开始一条新线程.
7.2 Start()
当1个线程or其派生类执行1个start()方法. 开启1个新线程, 并调用该类的run()方法.
注意: 1个线程如果已经调用过一次start(), 再调用start()则或抛异常.
7.3 stop()
停止1个1个线程.
7.4 setName() 和 getName()
设置和获得对应线程的名字.
7.5 Thread.currentThread()
注意这个方法是一个static方法, 而上面的都不是静态方法.
这个方法返回当前执行语句所属的线程.
例如1个线程对象A. 它的run() 方法里调用了 Thread.currentThread().getName() 函数.
假如直接执行A.run() 则返回的是当前线程(而不是A线程) 的名字, 因为对象A并没有启动自己的线程.
假如执行难过A.start(), 那么该函数返回A启动的线程的名字了.
八, 小结
这篇文章只是简介, 很多重要的方法例如 sleep() , wait() 等都没有介绍, 这些是线程控制的内容. 本吊打算在另一篇博文里介绍.

sales@spasvo.com