Java笔记16:多线程共享数据

一、Thread实现

  1. public class ThreadDemo4 {
  2. publicstaticvoid main(String[] args) {
  3. new ThreadTest4().start();
  4. new ThreadTest4().start();
  5. new ThreadTest4().start();
  6. }
  7. }
  8. class ThreadTest4 extends Thread {
  9. privateinttickets = 100;
  10. publicvoid run() {
  11. booleanloop = true;
  12. while(loop) {
  13. if(tickets > 0) {
  14. System.out.println(Thread.currentThread().getName() + " is sailing ticket " + tickets--);
  15. } else {
  16. loop = false;
  17. }
  18. }
  19. }
  20. }

运行结果:

Java笔记16:多线程共享数据

分析:

从运行结果可以看出,最终打印出了3份数据。说明每个线程独立地拥有一份数据,用Thread实现的多线程之间无法共享数据。

二、Runnable实现

  1. public class ThreadDemo5 {
  2. publicstaticvoid main(String[] args) {
  3. ThreadTest5 t = new ThreadTest5();
  4. new Thread(t).start();
  5. new Thread(t).start();
  6. new Thread(t).start();
  7. }
  8. }
  9. class ThreadTest5 implements Runnable {
  10. privateinttickets = 100;
  11. publicvoid run() {
  12. booleanloop = true;
  13. while(loop) {
  14. if(tickets > 0) {
  15. System.out.println(Thread.currentThread().getName() + " is sailing ticket " + tickets--);
  16. } else {
  17. loop = false;
  18. }
  19. }
  20. }
  21. }

运行结果:

Java笔记16:多线程共享数据

分析:

从运行结果可以看出,最终打印出来的只有一份数据。说明用Runnable实现的多个线程之间共享一份数据。

结论:

两种方法实现多线程的最重要区别是:Runnable实现的多线程共享数据,Thread实现的多线程,每个线程拥有独立的数据。所以在实际项目中,通常用Runnable方式来实现多线程。

上一篇:QTP自传之录制


下一篇:QTP自传之web常用对象