A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

方式1:继承Thread类
  1. package com.kxg_08;

  2. public class MyThread extends Thread {

  3.         // 由于这一百张票是多个线程共享资源,定义到线程外部,并且用静态修饰。
  4.         public static int ticket = 100;

  5.         @Override
  6.         public void run() {
  7.                 while (true) {
  8.                         if (ticket > 0) {
  9.                                 System.out.println(Thread.currentThread().getName() + "正在卖第"
  10.                                                 + (ticket--) + "票");
  11.                         }
  12.                 }
  13.         }
  14. }
复制代码
  1. package com.kxg_08;

  2. public class SellTicketDemo {
  3.         public static void main(String[] args) {
  4.                 MyThread m1 = new MyThread();
  5.                 MyThread m2 = new MyThread();

  6.                 m1.setName("窗口1");
  7.                 m2.setName("窗口2");

  8.                 m1.start();
  9.                 m2.start();
  10.         }
  11. }
复制代码


4 个回复

倒序浏览
方式2:实现Runnable接口
  1. package com.kxg_09;

  2. public class SellTicekt implements Runnable {
  3.         private int ticket = 100;

  4.         @Override
  5.         public void run() {
  6.                 while (true) {

  7.                         if (ticket > 0) {
  8.                                 System.out.println(Thread.currentThread().getName() + "正在出售第"
  9.                                                 + (ticket--) + "张票");
  10.                         }
  11.                 }
  12.         }
  13. }
复制代码
  1. package com.kxg_09;

  2. /*
  3. * 实现Runnable接口
  4. */
  5. public class SellTicketDemo {
  6.         public static void main(String[] args) {
  7.                 // 创建自定义类对象
  8.                 SellTicekt st = new SellTicekt();

  9.                 // 创建线程
  10.                 Thread t1 = new Thread(st);
  11.                 Thread t2 = new Thread(st);

  12.                 // 设置线程名称
  13.                 t1.setName("窗口1");
  14.                 t2.setName("窗口2");

  15.                 // 启动线程
  16.                 t1.start();
  17.                 t2.start();
  18.         }
  19. }
复制代码



回复 使用道具 举报
不错,学习了。
回复 使用道具 举报
没加锁呀
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马