黑马程序员技术交流社区

标题: JAVA学习记录 6 多线程 [打印本页]

作者: xman20    时间: 2015-3-21 10:35
标题: JAVA学习记录 6 多线程
线程和进程的学习一直是一个难点。



         多线程的实现可以使用两种,一种是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;

    }
}



作者: 一抹浓茶    时间: 2015-3-21 10:36
顶一个,赞一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2