Thread2

线程同步:排队执行
线程异步:多个线程,使用同一个资源,抢占资源
练习1:
1.加载图片
打印1%-100%
打印加载成功
2.显示图片
打印显示完成
要求:加载完成以后才能显示
//while(load.isAlive()) {
//Thread.yield();
//}
//等待load线程执行结束,再执行show线程

//等待load线程执行结束,再执行show线程
try {
 load.join();
} catch (InterruptedException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
}

练习2:
两个人,共用同一个桌子 Table
桌子上20个豆子 bean = 20
2个人从桌子上那豆子池
if(bean0) 结束死循环
public synchronized int getbean() {
if(bean
0) {
throw new RuntimeException(“豆子没了”);
}
Thread.yield();//模拟cpu切换
return bean–;
}
在公用的方法上添加锁
练习3:
一个商场很多人挑衣服,只能一个人试衣服
synchronized (this){
System.out.println(name+“试衣服”);
}
将只能单个线程进行的 用锁锁住
练习4:
1.加载图片
打印1%-100%
打印加载完成
开始下载
1%-100%
下载完成
2.显示图片
打印显示完成
要求:加载完成以后才能显示
synchronized(o){
o.notify();
}

    synchronized(o) {
    try {
     o.wait();
    } catch (InterruptedException e) {
             e.printStackTrace();
    }
    wait() ->使用notify() 唤醒
                 使用时必须配合锁使用
                 InterruptedException  中断异常
    wait(long timeout)  ->其他线程调用此对象的notify()或notifyAll()方法前,或指定时间前 导致当前线程等待
    wait(long timeout, int nanos) -> 其他线程调用此对象的notify()或notifyAll()方法前,或者其他线程中断当前线程,或者   超过指定时间量前,导致当前线程等待
    notify() ->使用o对象有好几个线程等待,随机唤醒一个线程
    notifyAll() ->唤醒对象上全部等待的线程

synchronized:
1.范围越小越好,尽量不要锁整个方法
2.锁在静态方法上, 锁类 ->千万别用
3.可锁方法,锁代码块 ->一个对象有一个锁。并且锁只能被一个线程获得
4.锁代码块时,通常使用的对象就是this
锁的对象:共享的对象
5.一定要避免死锁:互相占用,但是都不释放

Vecetor效率太低,不使用
List list =new ArrayList();
Collections.synchronizedlist(list) ->线程安全的集合
线程池:线程对象 ExecutorService
好处:实现线程对象的重复利用,提高效率
ExecutorService pool=Executors.newFixedThreadPool(3); ->固定线程对象个数3的线程池
ExecutorService pool=Executors.newSingleThreadPool(); ->线程对象个数 1 的线程池
ExecutorService pool=Executors.newCachedThreadPool(); ->按照需求提供相应个数线程对象的线程池
ExecutorService pool=Executors.newScheduleThreadPool(); ->创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值