黑马程序员_java中的多线程3

------- android培训java培训、期待与您交流! ----------

一.Java多线程的安全问题

          1.产生安全问题的原因

               多个线程操作同一个数据时,一个线程对数据的操作还没完成,另一个线就程获取了资源来操作同一个数据。从而使数据发生错误。

           2.解决方式

                线程同步:一个线程对共享数据的操作还没完成,其他线程变无法操作共享数据。

                线程同步实现方式:

                                                        第一种方式:

                                                          使用synchronized 语句块,如:

                                                                    synchronized(Object obj){
                                       

                                                                              ....多个线程操作共享数据的代码...

                                                                    }

                                                          第二种方式:

                                                              使用synchronized修饰的函数,如:

                                                                         public synchronized void  方法名(参数){

                                                                                     ....多个线程操作共享数据的代码...

                                                                         }

 

  

      示例代码:

                            //1.编写Runable接口实现类

        class Demo implements Runnable{

                 //定义一个私有的成员变量

                  private int tick = 100;

                //创建一个Object对象。

                Object  obj = new Object();

                 //覆盖Runnable接口中的run()方法

               public void run(){

                    //编写多线程的执行代码

                while(true){

                    //tick是d所指对象的私有属性,输入共享数据。将操作tick的语句放入synchronized()方法体中。

                    synchronized(obj){

                       if(tick>0){

                               //Thread.currentThread().getName()——获得当前运行的线程对象的名字。

                              System.out.println(Thread.currentThread().getName()+"剩余票数"+tick--);

                       }

                    }

                 }

              }

        }

         //编写测试类。

       public class Test(){

            public static void main (String[] args){

                  //2.创建实现类对象

                       Demo d= new Demo();

                  //3.调用Thread类的构造函数,创建Thread类的对象(即线程对象)。将实现类对象传递给不同线程对象。使不同线程共享同一个数据。
                        Thread t1 = new Thread(d);

                        Thread t2 = new Thread(d);

                         Thread t3 = new Thread(d);

                   //4.调用Thread类的对象t 的start()方法开启线程

                         t1.start();

                         t2.start();

                         t3.start();

            }

       }

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值