JAVA中的多线程

Posted 零EVA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中的多线程相关的知识,希望对你有一定的参考价值。

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

原因:

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

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

 

解决办法:

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

 

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中的多线程

Java中的多线程 模拟网络抢票代码

什么是JAVA的多线程?

如何限制Java程序中的多线程?

JAVA中的多线程

Java的多线程学习