线程和进程的学习一直是一个难点。 
 
  
 
         多线程的实现可以使用两种,一种是extends Thread,一种是Implements Runnable。 
 
  
 
         相比extends Threads,更好的方式是implements Runnable。 
 
因为JAVA只支持单继承,如果只继承了Thread,就没法去继承其他的类,如果实现Runaable接口,那么线程的代码块只是其自身的一部分,通常情况下,更推荐使用实现Runnable,而非继承Threads. 
 
  
 
         线程运行中还有一个锁的概念,线程的安全性是一个很重要的问题,在之前自己写过的android程序中,UI线程只有主线程才能修改,如果是其他线程想修改UI,必须要通知主线程并进行相应的修改。 
 
  
 
         多线程运行对于用户体验性的提升有非常大的帮助,之前自己曾经在android 2.3的版本中直接在主函数中写入网络连接下载信息并在主界面中显示,导致界面很久无响应,后来改用异步任务,不会影响到主界面的显示,android4.0以后也禁止在主线程之中,写入网络连接程序。 
 
  
 
         锁是一个优秀的控制程序,可以保证多线程的安全性,但是凡事有利有弊,牺牲的是程序的响应速度,当一个程序占用有锁的方法的时候,其他程序只能等待。数据库中的处理机制也应该也是用的同样的机制,所以进行分级制,这是一个不可调和的矛盾,只能根据实际需要,在安全性和效率上选择一个平衡。 
 
  
 
      之前写的测试题总是问了一个单例模式,不知道是啥,视频中讲到了,做个记录。 
 
  
 
package itheima.com; 
 
 
 
public class Test5 { 
 
 //创建一个对象引用 
 private static Test5 s = null; 
 //定义一个空构造函数 
    private Test5(){} 
    //获得实例的函数 
    public static Test5 getInstance() 
 
   { 
 
            if(s==null) 
             synchronized(Test5.class) 
             { 
              if(s==null) 
              { 
              //若为空,创建一个对象 
                    s = new Test5(); 
              } 
                    
               
             } 
            return s; 
 
    } 
} 
 
 
 |   
        
 
    
    
    
     
 
 |