Java多线程下资源共享


  1. class MyThread extends Thread{    

  2.     private int ticket=10;    

  3.     public void run(){    

  4.         for(int i=0;i<20;i++){    

  5.             if(this.ticket>0){    

  6.                 System.out.println("卖票:ticket"+this.ticket--);    

  7.             }    

  8.         }    

  9.     }    

  10. }  

  11.   

  12.   

  13. public class ThreadTicket {    

  14.     public static void main(String[] args) {    

  15.         MyThread mt1=new MyThread();    

  16.         MyThread mt2=new MyThread();    

  17.         MyThread mt3=new MyThread();    

  18.         mt1.start();//每个线程都各卖了10张,共卖了30张票    

  19.         mt2.start();//但实际只有10张票,每个线程都卖自己的票    

  20.         mt3.start();//没有达到资源共享    

  21.     }    

  22. }   

  23. /* 

  24. 卖票:ticket10 

  25. 卖票:ticket10 

  26. 卖票:ticket9 

  27. 卖票:ticket9 

  28. 卖票:ticket8 

  29. 卖票:ticket10 

  30. 卖票:ticket7 

  31. 卖票:ticket8 

  32. 卖票:ticket6 

  33. 卖票:ticket9 

  34. 卖票:ticket5 

  35. 卖票:ticket7 

  36. 卖票:ticket4 

  37. 卖票:ticket8 

  38. 卖票:ticket7 

  39. 卖票:ticket6 

  40. 卖票:ticket5 

  41. 卖票:ticket4 

  42. 卖票:ticket3 

  43. 卖票:ticket2 

  44. 卖票:ticket6 

  45. 卖票:ticket1 

  46. 卖票:ticket3 

  47. 卖票:ticket2 

  48. 卖票:ticket1 

  49. 卖票:ticket5 

  50. 卖票:ticket4 

  51. 卖票:ticket3 

  52. 卖票:ticket2 

  53. 卖票:ticket1 

  54. 请按任意键继续. . . 

  55. */  

[java] view plain copy

  1. //如果用Runnable就可以实现资源共享,下面看例子:  

  2.    

  3. class MyThread implements Runnable{    

  4.     private int ticket=10;    

  5.     public void run(){    

  6.         for(int i=0;i<20;i++){    

  7.             if(this.ticket>0){    

  8.             System.out.println("卖票:ticket"+this.ticket--);    

  9.             }    

  10.         }    

  11.     }    

  12. }    

  13.   

  14. public class RunnableTicket {    

  15.     public static void main(String[] args) {    

  16.         MyThread mt=new MyThread();    

  17.         new Thread(mt).start();//同一个mt,但是在Thread中就不可以,如果用同一    

  18.         new Thread(mt).start();//个实例化对象mt,就会出现异常    

  19.         new Thread(mt).start();    

  20.     }    

  21. }  

  22. //虽然现在程序中有三个线程,但是一共卖了10张票,也就是说使用Runnable实现多线程可以达到资源共享目的。  

  23. /* 

  24. 卖票:ticket10 

  25. 卖票:ticket8 

  26. 卖票:ticket6 

  27. 卖票:ticket9 

  28. 卖票:ticket5 

  29. 卖票:ticket7 

  30. 卖票:ticket3 

  31. 卖票:ticket1 

  32. 卖票:ticket4 

  33. 卖票:ticket2 

  34. 请按任意键继续. . . 

  35. */  


你可能感兴趣的:(Java多线程下资源共享)