java基础24_多线程

1.多线程:

(1)如果一个应用程序有多条执行路径,则被称为多线程程序。概念区分:进程(正在执行的程序)、线程(程序的执行路径,执行单元)、单线程(应用程序只有一条执行路径)、多线程(应用程序有多条执行路径)。

(2)多线程程序实现的两种方案:

-------------A:继承线程Thread类:a:自定义类继承Thread类、b:重写run方法、c:创建测试类,在测试类中创建自定义类的多个对象、d:调用start()方法

-------------B:实现Runnable接口:a:自定义类实现Runnable接口、b:重写run方法、c:创建测试类,并在main方法中创建自定义的一个对象、d:在测试类中创建Thread类的多个对象,并把创建好的自定义类对象作为构造参数传递,e:调用start()方法。

(3)概念区分:A:如何启动一个线程(调用start()方法就等于启动了线程)、B:start()和run()的区别(调用run方法仅仅是普通方法的调用,start方法是先启动线程,然后自动调用run方法)、C:线程随机性原理(cpu的高效切换)、D:线程的安全问题是怎么产生的(程序是多线程,又有共享的数据,并且还有多条语句对共享数据进行操作。),以及是如何解决的(a:同步代码块加锁,b:同步方法)、E:线程的声明周期(

新建状态:创建线程对象

就绪状态:具备执行资格、不具备执行权

运行状态:具备执行资格、具备执行权

----阻塞状态:不具备执行资格、不具备执行权

死亡状态:变成垃圾


) E:同步解决线程安全问题的方式有几种(1.同步代码块、2.同步方法)、F:同步代码块的锁对象是谁(可以是任意对象)同步方法的锁对象是谁(this对象)静态方法的锁对象是(当前类的字节码文件对象)


2.单例设计模式:

(1)保证类在内存中只有一个对象。

(2)怎么保证:构造私有、自己造一个对象、提供公共访问方式

(3)两种方式:

A:懒汉式

public class Singleton{
      public static void main(String[] args)       {
             private Singleton(){}
             private static Singleton instance=null;
             public synchronized static Singleton getSingleton(){
                    if(instance==null){
                            instance=new Singleton();
                     }
                    return instance;
             }
       }
}
懒加载模式、和线程安全问题需要注意(开发一般用饿汉式)

B:饿汉式

public class Student {
				private Student(){}

				private static Student s = new Student();

				public static Student getStudent() {
					return s;
				}
			}

举例:JDK的Runtime类本身也是单例模式。

设计模式:

就是前人经验的总结和积累,就是一个个的模版。

 

23种设计模式:

分类:

创建型模式:造对象。

结构型模式:对象间的关系。

行为型模式:功能。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值