A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

线程通信的理解、线程的状态、为什么会有多线程的安全问题、
多线程安全问题的解决办法、创建线程有几种方式,那种方式比较好,
为什么、同步的前提、说说你对死锁的理解
      
       同步的前提:必须是多线程。操作一个共享数据,该数据被多条语句操作
       同步:效率低,如果出现嵌套同步,就容易产生死锁
       死锁:指俩个或者以上的线程在执行过程中,因为
              争夺资源产生的一种互相等待现象
       run:仅仅是封装了被线程执行的代码,直接调用的普通方法,
       start:首先启动了线程,然后由jvm去调用该线程的run()方法
      
       线程状态:
              新建:start()
              运行:具备执行资格,同时具备执行权;
              冻结:sleep(time),wait()notify()唤醒;线程释放了执行权,同时释放执行资格;
              临时阻塞状态:线程具备cpu的执行资格,没有cpu的执行权;
              消亡:stop()
       创建线程的第一种方式:继承Thread ,由子类复写run方法。
              第二种方式:实现一个接口Runnable
                 步骤:
                     1,定义类实现Runnable接口。
                     2,覆盖接口中的run方法(用于封装线程要运行的代码)。
                     3,通过Thread类创建线程对象;
                     4,将实现了Runnable接口的子类对象作为实际参数传递给Thread类中的构造函数。
                        为什么要传递呢?因为要让线程对象明确要运行的run方法所属的对象。
                     5,调用Thread对象的start方法。开启线程,并运行Runnable接口子类中的run方法。
                            Tickett = new Ticket();
       实现接口的好处:避免了java单继承带来的局限性,适合多个相同的代码去处理同一个资源,
                     把线程和程序的代码,数据有效分离,较好的体现了面向对象的设计思想。
      
       安全问题产生原因:多个线程操作一个拥有多条语句的共享数据,产生数据混乱
       解决:加上同步

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马