码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA中的多线程(三)

时间:2017-06-19 18:39:40      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:java   dem   分享   同步代码块   alt   部分   过程   共享   blog   

多线程的运行出现了安全问题

原因:

  当多条语句在操作同一个线程数据的时候,一个线程对多条语句只执行了一部分,还没执行完

  另一个线程参与进来执行,导致共享数据的错误

 

解决办法:

  对多条操作共享数据的语句,只能让一个线程都执行完。在执行过程中,其它线程不可以参与执行。

 

JAVA对于多线程安全问题,提供了专业的解决方式

就是同步代码块

synchronized(对象)

{

  需要被同步的代码

}

技术分享
 1 class Ticket implements Runnable//extends Thread
 2 {
 3     private int tick = 100;
 4     Object obj = new Object();
 5     public void run()
 6     {
 7         while(true)
 8         {
 9             synchronized(obj)
10             {
11                 if(tick>0)
12                 {
13                     try{Thread.sleep(10);}catch(Exception e){}
14                     System.out.println(Thread.currentThread().getName()+"sales : "+tick--);
15                 }
16             }
17         }
18     }
19 }
20 class Demo
21 {
22     
23     public static void main(String[] args)
24     {
25         Ticket t = new Ticket();
26         Thread t1 = new Thread(t);
27         Thread t2 = new Thread(t);
28         Thread t3 = new Thread(t);
29         Thread t4 = new Thread(t);
30         t1.start();
31         t2.start();
32         t3.start();
33         t4.start();
34         /*
35         Ticket t1 = new Ticket();
36         Ticket t2 = new Ticket();
37         Ticket t3 = new Ticket();
38         t1.start();
39         t2.start();
40         t3.start();
41         */
42         //System.out.println("");
43     }
44 }
View Code

 

JAVA中的多线程(三)

标签:java   dem   分享   同步代码块   alt   部分   过程   共享   blog   

原文地址:http://www.cnblogs.com/hepengke/p/7049882.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!