Java语言基础中多线程安全问题的解决

Java语言基础中多线程安全问题的解决
一、解决多线程安全问题有两种方式。
  线程问题产生的原因
     多个线程在操作共享的数据。
当一个线程在执行操作共享数据的多条代码的过程中,其他线程参与了运算,就会导致线程问题的产生。
1,方式一:同步代码块。
  同步关键字:synchronized。

  同步代码块的格式:
   synchronized(对象)
   {
   需要被同步的代码;
   }
Java语言基础中多线程安全问题的解决_第1张图片
说明:
  1,需要解决多线程的安全问题,就得清楚产生多线程安全问题的前提。多个线程在操作相同的共享数据。
   2,同步代码块解决多线程的安全问题,就必须清楚共享的数据是哪些,用同步代码块将 产生安全问题的代码锁起来,当多个线程执行到同步代码块时就会判断同步锁,如果已 经有线程持有锁对象,那其它的线程无法进入同步代码块,直到持有锁对象的线程释放 锁,其它的线程才能拥有锁对象的持有权,从而进入同步代码块进行操作。加入同步代 码块后,就解决了多线程的安全问题。

  同步的好处:解决了线程安全问题。
  同步的弊端:相对降低了效率,因为同步外的线程都会判断同步锁。

方式二:同步函数。
Java语言基础中多线程安全问题的解决_第2张图片
说明:同步函数的方式解决多线程的安全问题。将需要被同步的代码封装到同步函数中,在run 方法中调用同步函数,同步函数的锁是this。

你可能感兴趣的:(Java)