Java中Thread类和Runnable接口的使用举例


  

引言:

java中用Thread类和实现Runnable接口的方式都可以创建线程,但实现Runnable接口的方式更适合用来处理多个线程有共享数据的情况。

创建三个窗口卖票,总票数为100张

使用继承Thread类的方式

存在线程的安全问题,待解决。

class Window extends Thread {
    private static int ticket = 100;//通过static关键字实现数据共享

    @Override
    public void run() {
        while (true) {
            if (ticket > 0) {
                System.out.println(getName() + ":买票,票号为:" + ticket);
                ticket--;
            } else {
                break;
            }
        }
    }
}

public class WindowTest {
    public static void main(String[] agrs) {
        Window t1 = new Window();
        Window t2 = new Window();
        Window t3 = new Window();

        t1.setName("窗口1");
        t2.setName("窗口2");
        t3.setName("窗口3");

        t1.start();
        t2.start();
        t3.start();
    }
}

使用实现Runnable接口的方式

存在线程的安全问题,待解决。

class Window1 implements Runnable {
    private int ticket = 100;
    @Override
    public void run() {
        while (true) {
            if (ticket > 0) {
                System.out.println(Thread.currentThread().getName() + ":卖票,票号为:" + ticket);
                ticket--;
            } else {
            	break;
            }
        }
    }
}

public class WindowTest1 {
    public static void main(String[] args) {
        Window w = new Window();

        Thread t1 = new Thread(w);//共享同一个Window
        Thread t2 = new Thread(w);//共享同一个Window
        Thread t3 = new Thread(w);//共享同一个Window

        t1.setName("窗口一");
        t2.setName("窗口二");
        t3.setName("窗口三");

        t1.start();
        t2.start();
        t3.start();
    }
}

文章作者: YangChongZhi
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 YangChongZhi !
评论
 上一篇
Java中线程的生命周期 Java中线程的生命周期
   引言: 想要实现多线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象来表示线程,在它的一个完整的声明周期中通常要经历不同的几种状态。 线程的不同状态 新建 当一个Thread类或其子类的对象被声明并
2021-01-06
下一篇 
Java中Thread类的有关方法 Java中Thread类的有关方法
   引言: java中的Thread类的相关常用方法及构造器介绍 构造器 Thread() 创建新的Thread对象 Thread(String threadname) 创建线程并指定线程实例名 Thread(Runnabl
2021-01-06
  目录