多线程
来源:互联网 发布:java设计模式uml 编辑:程序博客网 时间:2024/06/06 17:56
多线程的实现方式
1,exrends Thread 类 重写run方法.用 start 开启
2,implements Runnable接口 重写run方法,用start开启
也可以通过匿名内部类来实现多线程的创建和开启
new Thread(){ void run(){ //代码 }}.start();new Thread(new Runnable(){ public void run(){ //代码}}){}.start;
线程安全使用 synchronized 代码块 或synchronized函数来实现…后期可以通过lock unlock 来完成锁的取得和释放,
synchronized函数是sync代码块的简写格式,
synchronized函数的锁是this 就是当前类,
synchronized代码块的锁是任何对象,,,这个对象也称为监视器
Thread下的wait() ,notify() 是监视器对象的方法,是定义在Object中的,
jdk1.5后出现了lock 接口,,将同步函数,封装,使用更方便.
//lock锁要new子类的对象Lock lock=new ReentrantLock();public void show(){ try{ //开启锁 lock.lock(); //通过lock中的方法new监视器对象, /*监视器对象中的包含等待,唤醒方法.但是该监视器对象可以实现在一个锁上挂好几组监视方法,互不影响 可以用来实现多制造者 ,多消费者的线程, */ Condition cond=lock.newCondition(); }finally{ lock.unlock(); //释放锁一定要放在必须执行的代码块的,如果运行中出现意外,可以确保一定会释放锁,让其他线程可以继续运行 } }
写一个卖票的实例
class Bank{ int num=0; public viod add(int r){ synchronized(Bank.class){ num=num+r; System.out.println("现有金额"+num+Thread.currentThread()); //此处应有try catch Thread.sleep(100); } }}class Consumer implements Runnable{//继承runnable接口 实现run方法 Bank b=new Bank(); public viod run(){ for(int x=0 ;x<4;x++){ b.add(100); } }}public class show{ public static void main(String [] args){ Consumer c=new Consumer(); Thread t=new Thread(c); t.start(); }}
阅读全文
0 0
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 【前端】textarea接入ACE代码编辑器
- 响应式广告实现
- MIME 参考手册
- 解决三星note3调用系统拍照后程序崩溃或无法获取图片
- android第三方视频解码器Vitamio SDK使用后的感觉(2014.03.11)
- 多线程
- 需要学习的内容
- javax.sql.DataSource
- spring-cloud 之ClassNotFoundException: org.springframework.cloud.context.named.NamedContextFactory
- 记第一篇博客
- hdu3045 斜率优化
- Oculus展示新突破“焦点平面显示技术”,让近视人群使用VR头盔时摘掉眼镜
- 学习自动化测试的一些总结
- 数学建模|机器学习|主成分分析原理(PCA)