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 }
以上是关于JAVA中的多线程的主要内容,如果未能解决你的问题,请参考以下文章