java——Runnable多线程2

2019年2月17日19:51:18 发表评论 1,160 views
/**
 * Created by xabcd on 2019/2/17.
 */
public class threadtickets
{
    public static void main(String args[])
    {
        thticket ti = new thticket();
        new Thread(ti).start();
        new Thread(ti).start();
        new Thread(ti).start();
        new Thread(ti).start();


    }
}
class thticket implements Runnable
{
    private int tickets = 20;
    public void run()
    {
        while(true)
        {
            if(tickets>0)
                System.out.println(Thread.currentThread().getName()+"出售票"+tickets--);
//Thr........Name()表示取得当前运行的线程名称
} } } Thread-0出售票20 Thread-3出售票17 Thread-2出售票18 Thread-1出售票19 Thread-2出售票14 Thread-3出售票15 Thread-0出售票16 Thread-3出售票11 Thread-2出售票12 Thread-2出售票8 Thread-2出售票7 Thread-2出售票6 Thread-2出售票5 Thread-2出售票4 Thread-2出售票3 Thread-2出售票2 Thread-2出售票1 Thread-1出售票13 Thread-3出售票9 Thread-0出售票10



实现 Runnable 接口 相对于 继承 Thread 类 来说, 有如 下 几个 显著 的 优势。

⑴ 适合 多个 相同 程序 代码 的 线程 去处 理 同一 资源 的 情况, 把 虚拟 CPU( 线程) 同 程序 的 代码、 数据 有效 分离, 较好 地 体现 了 面向 对象 的 设计 思想。

⑵ 可以避免 由于 Java 的 单 继承 特性 带来 的 局限。 开发 中经 常会 碰到 这样 一种 情况, 即要 将 已经 继承 了 某一个 类 的 子类 放入 多 线程 中, 由于 一个 类 不能 同时 有 两个 父 类, 所以 不能 使用 继承 Thread 类 的 方式, 那么 就 只能 采用 实现 Runnable 接口 的 方式。

⑶ 增强 了 程序 的 健壮性, 代码 能够 被 多个 线程 共享, 代码 与 数据 是 独立 的。 当 多个 线程 的 执行 代码 来自 同一个 类 的 实例 时, 即 称 它们 共享 相同 的 代码。 多个 线程 可以 操作 相同 的 数据, 与 它们 的 代码 无关。 当 共享 访问 相同 的 对象 时, 即 共享 相同 的 数据。 当 线程 被 构造 时, 需要 的 代码 和数 据 通过 一个 对象 作为 构造 方法 实 参 传递 进去, 这个 对象 就是 一个 实现 了 Runnable 接口 的 类 的 实例。

事实上, 几乎 所 有的 多 线程 应用 都可以 使用 第 2 种 方式, 即 实现 Runnable 接口。

 


			

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: