多线程(下)

匿名内部类方式使用多线程:
格式:
new 类名或者接口名(){
};
本质:是该类或者接口子类对象

定时器

定时器是一个应用十分广泛的线程工具,可以用于调度多个定时任务以后台的方式执行,在java中,可以通过Timer和timerTask类来定义调度的功能
构造方法:
Timer()创建一个新定时器
Timer(Boolean isDaemon) 创建一个新定时器,可以指定其相关的线程作为守护程序运行
Timer(String name)创建一个新定时器,其想爱你高管的线程具有指定的名称
Timer(String name,boolean isDaemon):创建一个定时器,与其相关的线程具有指定的名称,并且可以自定义
方法:
cancel():终止此定时器.丢弃所有当前已安排的人任务
purge():从此定时器的任务中移除所有已取消的任务
schedule(TimerTask task,Date time):安排在指定的时间执行指定的任务
schedule(TimeTask task,Date firstTime,long period) :安排指定的任务在指定的时间开始进行重复的固态延迟

多线程有几种实现方案,分别是那种?

1.继承Thread类
2.继承Runnable接口
3.扩展:实现Callable接口.(这个得和线程池结合)

2.同步有几种方式,分别是什么?

两种,1.同步代码块  2.同步方法

thread和Runnable的区别
1.Runnable可以实现共享数据,而Thread不能
2.Runanble能解决多重继承问题,而Thread只能单一的继承
3.实例化方式不同
线程常用的方法
start()开启线程 并且执行run()方法
currentThread():获取当前线程对象
getName():获取当前线程对象的名称
setName(String name):给线程设置名称
sleep(Long milln):让线程在指定的毫秒内休眠
join():等待该线程结束
Yeild():暂停当前线程,让其他线程执行
interrupt():中断线程
interrupted():判断线程是否中断,如果线程中断返回true.否则返回false
setPriority(int newPriority):设置线程的优先级,优先级范围是1-10,默认是5
wait():让当前线程处于永久暂停装填并且释放锁对象
notify():唤醒处于暂停状态的一个线程
notifyAll():唤醒所有处于暂停状态的线程
线程的安全问题
1.多线程的环境
2.他有共享数据
3.多线程对共享数据进行了操作

线程安全问题的解决方式/线程同步的方式
同步代码块
sychronized(锁对象){//上锁
//存在问题的代码/要同步的代码
}
同步方法:
public synchronized void 方法名称(){//上锁
//存在问题的代码/要同步的代码
}
锁对象
lock锁:
void lock() 获得锁
void unlock()释放锁
同步代码块的锁对象:
1.Object对象
2.继承Object对象的类
3.this
同步方法的锁对象
1.本类的对象this
静态同步方法的锁对象
1.类名.class
线程的通信
wait()
notify()
notityAll()
注意:
以上三个方法必须在同步方法或者同步代码块中使用,否则会报错,并确要是一个锁对象

posted @ 2020-12-29 10:50  小荣儿  阅读(35)  评论(0编辑  收藏  举报