黑马程序员---多线程

来源:互联网 发布:最全小说软件 编辑:程序博客网 时间:2024/06/05 03:10

                    黑马程序员—线程

------- android培训、java培训、期待与您交流! --
1什么是进程,什么是线程?

    进程:是一个正在执行的应用程序, 每一个程序都有一个执行顺序,该顺序是执行路径,或一个控制单元

  线程:就是进程中的一个独立的控制单元。多线程就是在控制着程序的运行。

    多线程:就是多个线程同时运行。

2线程的五种状态:

           被创建(new 线程()),启动(线程.start()),冻结(睡眠或等待),临时状态(有执行资格,但没有执行权),死亡(run方法执行完)

3创建线程的两种方式:

          第一种:步骤:
                     (1)继承Thread类 
                      (2)复写Thread类中的run()方法。把自定义的代码存放在 run方法中,让线程执行
                 (  3)调用线程的 start( )方法,,该方法有两个作用,启动线程,执行run方法
     第二种:
           (1)定义一个类,实现Runable 接口,并覆盖Runable接口中的run方法,把线程要执行的代码写到run方法中
           (2)通过Thread类创建一个线程对象,将Runable接口的子类对像作为参数传递给Thread 类的构造函数中。

           这两种创建线程的区别: 

                                  继承Thread,线程要执行的代码存放在Thread类的子类run()方中。
                                     实现Runable,线程要执行的代码存放在Runable接口的子类对象中
                                     实现的好处:避免了单继承的局限性。在定义线程时建议使用实现方式。
                                    

  4.当多线程执行时,容易出现安全问题,他的主要原因:

               当一个线程的多条语句在操作的享数据,一个线程的多条语句只执行一部分,还没有执行完,另一个线程  参与进来执行,导致共享数据的错误。
          解决方法:对多条操作共享数据的语句,只让一个线程都执行完,执行过程中,其他线程不可以参与执行。java提供专业的解决方法就是把多条操作共享数据的语句放在同步代码块中,,即:
        synchronized(对象){
                     需要被同步的代码。
          }
         对象如同锁,持有锁的线程可以在同步中执行,没有的锁的线程即使获取了cpu执行权,也进不去。这样做的好处是解决了线程的安全问题,但是多个线程在执行时都要判断锁,比较消耗资源。

5如何寻找同步中的代码:

     1那些是线程要执行的代码
     2那些是共享数据。
     3明确那些语句是操作共享数据的

6同步的前提:

        1必须有两个及两个以上的线程
       2 必须保证多个线程使用的是同一个锁,必须保证同步中只能有一个线程在执行。

7同步的表现形式:

      同步代码块和同步函数。
     函数需要被对象调用,那么函数都有一个属于对象的引用是this,所以同步函数使用的锁是this,但是静态同步方法中使用的锁就不在是this了,因为静态不可以定义this ,静态方法进内存时就没有本类对象,但是一定会有该类对应的文件字节码对象,所以静态函数的锁就是该类的字节码文件对象。,即:类名.class


8多个线程操作共享资源的方式:

     (1)把数据定义成静态的(2)多个线程的run()方法,操作一个对象

       

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