黑马程序员技术交流社区

标题: 多线程复习笔记总结 [打印本页]

作者: LiuKang    时间: 2013-12-8 16:09
标题: 多线程复习笔记总结
设计模式:解决某一类问题最行之有效的方法
单例设计模式:解决一个类在内存中只存在一个对象
饿汉式:类一加载就有对象,懒汉式:只有到调用方法时才有对象(延时加载)
这个是先初始化对象。
称为:饿汉式。
Single类一进内存,就已经创建好了对象。这是饿汉式
class Single
{        private static Single s = new Single();
        private Single(){}
        public static Single getInstance()
        {return s;}}
//对象是方法被调用时,才初始化,也叫做对象的延时加载。成为:懒汉式。
//Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象。


懒汉式
class Single
{        private static Single s = null;
        private Single(){}
        public static Single getInstance()
        {         if(s==null){s=new Single();}
  return s;}}





进程是一个正在执行中的程序  每一个进程执行都有一个执行的顺序,该顺序是一个执行路径,或者叫一个控制单元
线程 就是进程中的一个独立的控制但愿,线程在控制着进程的执行
一个进程中至少有一个线程!
Jvm启动不止一个进程,还有负责垃圾回收机制的线程。也就是肯定是多线程的!

创建线程:一:继承Thread类(1.定义类继承Thread2.复写父类中run方法(将自定义代码存储在run方法中,以便执行)3.调用线程的start方法(开启线程并执行该线程的run方法))
二:定义类实现Runnable接口2.覆盖Runnable中的run方法3.通过Thread类创建线程4.将接口的子类对象作为实际参数传递给Thread类的构造函数

实现好处:避免了单继承的局限性。建议使用Runnable建立多线程,对象中的数据共享
区别:d.run()和d.start()
Thread类定义了一个功能,用于存储线程运行的代码,也就是run方法。
currentThread():获取当前线程对象  getName():获取线程名称

多线程特性:随机性  多线程在运行时可以理解为抢夺CPU的执行权

当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来执行,导致共享数据的错误解决:对多条操作共享数据的语句,只能让一个线程都执行完,在执行过程中其他线程不可以参与执行
同步代码块。。。持有锁的线程可以在同步中执行,没有锁的线程即使有执行权也进不去
Synchronized(对象){




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