线程与设计模式

	多线程

概述:
进程是指正在运行的程序
线程就是被包含在进程里.是操作系统能够调度的最小单位,也是实际
运作的单位.
一个软件的运行最少是需要一个进程.
一个进程的运行至少是需要一个线程
单线程是指只有一个线程 效率低,多线程就是拥有>1个线程来提高效率

线程的状态:
新建状态:刚被new出来时
待运行状态:等着cpu选中
运行状态:开始执行任务
终止状态:任务完成后
阻塞状态:运行状态没法干完活,需要等待,等到时机到了可以重新回到 运行状态

并行和并发的区别:
并行就是每个资源分配一个cup,不用抢
并发就是多个资源抢占一个cup,并发快

Thread工具类
常用方法:
static Thread currentThread()
返回对当前正在执行的线程对象。
ong getId()
返回该线程的标识符。
void setName(String name)
改变线程名称。
String getName()
返回该线程的名称。
void run()
重写这个方法来使线程来从可运行状态变成运行状态
static void sleep(long millis)
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
void start()
使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
void stop()
停止线程已过时

实现runnble接口
里面只有一个run方法,调用strat方法时还是需要用thread类名直接调用,将实现类的参数传入里面

同步锁:
概述:
就是用来解决多线程的编程数据的隐患问题
同步:实现排队的效果
锁:就是将有问题的资源加锁
异步:就是不排队,抢
效率:异步>同步
安全:同步>异步

synchronized关键字
实现同步锁的效果,保障了数据的安全性但是牺牲了一些效率
可以直接用在方法上:synchronized public void show(){…}
可以直接用在代码块上:考虑锁哪+锁对象
synchronized(锁对象){

}

如果锁的是普通的方法会自动分配一个this对象,
如果是静态方法会自动分配类名.class对象
如果锁的是代码块:
共享资源如果是普通资源,锁对象可以任意
共享资源如果是静态资源,必须使用类名.class

线程池
概述:
就是用来存放就绪状态的线程,提高线程的高可用
两个过程:取出来用+还回去

工具类:
Executors:创建线程池
static ExecutorService newFixedThreadPool(int nThreads)

ExecutorService pool = Executors.newFixedThreadPool(4);

ExecutorService:执行target
void execute(Runnable command) 在未来某个时间执行给定的命令。 

设计模式
概述;
其实就是一套代码的经验总结,java一共有23种设计模式
单例模式:就是保证一个类里面只有一个实力对象

单例模式

分为懒汉式与饿汉式
饿汉式就是先把对象new好
私有化构造方法,然后自己new一个对象,加上static,写一个静态方法返回这个对象
private person(){};
static person a = new person();
synchornizend static person show(){
return a;
}

懒汉式
就是按需加载,需要时才会new对象
需要锁,因为是在调用方法时new对象,多线程时会有安全隐患
private person(){};
private static person a;
synchornizend static public person show(){
if(a==null){
a=new person;
}
return a;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值