好程序员-千锋教育旗下高端IT职业教育品牌

400-811-9990
我的账户
好程序员

专注高端IT职业培训

亲爱的猿猿,欢迎!

已有账号,请

如尚未注册?

  • 客服QQ
  • 官方微信

    好程序员

    专注高端IT职业培训

[BigData] 好程序员大数据培训分享线程学习笔记二

[复制链接]
55 0
叶子老师 发表于 6 天前 | 只看该作者 |阅读模式 打印 上一主题 下一主题
  好程序员大数据培训分享线程学习笔记二,为什么要让run()方法自动开启
  cpu有随机性,线程抢到cpu,才能干活,所以run()方法必须通过strat()方法自动启动,这样cpu就获得了一个信号,知道该线程可以抢占cpu资源;
手动运行垃圾回收器
原理:当执行gc是,会触发垃圾回收机制,开启垃圾回收线程,执行finalize方法
cpu的特性:多个线程之间是抢cpu的关系,cpu有随机性
主函数结束,主任务区结束,主线程随着任务的结束而结束,线程随着任务的开始而开始
创建线程
默认情况下,主线程和垃圾回收线程都是由系统创建
①用Thread创建线程对象
Thread thread1=new Thread();  //只是创建Thread对象
thread1.start();   //开启线程
Thread类里的run()方法默认是空的,所以start()方法执行结果
所以需要继承Thread类 重写run()方法
run()方法直接被手动调用,run()对应的线程跟调用该方法所在的线程对应
Thread类实现了Runnable接口,Runnable接口里面只有run()方法,Thread类里实现的run()方法也只是空方法体,需要被继承去重写
创建一个A类实现Runnable接口,重写run()方法
A a=new A();
Thread to=new Thread(A);
to.start();
给某个方法的线程冲突部分加锁
锁的条件
①锁必须是对象
②要被所有的线程共享
同步代码块
synchronized(this){代码块}
同步函数
非静态  public synchronized void xxx(){}   //默认的锁是this  synchronized(this)
静态 public synchronized static void xxx(){}  //默认的锁是当前类的字节码文件   synchronized(xx.class)
notify(终止线程休眠)     wait(线程休眠,不可以抢占cpu)
wait()-->必须在同步环境中使用,必须使用锁调用,执行这行代码,对应的是哪个线程,就
notify()-->唤醒的是同一把锁下的线程,
Lock(显示同步) 替换 Synchronized(隐式同步)
//创建锁对象 Lock lock=new ReentrantLock();
//用于生产任务的Condition
Condition proCon = lock.newCondition();
//用于结束任务的condition
Condition conCon = lock.newCondition();
//开启锁
lock.lock();
proCon.await();
conCon.signal();
conCon.await();
proCon.signal();
//关闭锁
lock.unlock();
守护线程
当程序调用setDaemon方法时,并且将参数设置成true,当前线程就变成了了守护线程,只要主线程结束,该守护线程就会结束,这个方法一定要在start前调用
join()方法,优先级高于主线程,主线程会等当前的线程执行完后再去执行;该方法是在start之后

精彩内容,一键分享给更多人!
收藏
收藏0
转播
转播
分享
淘帖0
支持
支持0
反对
反对0
回复

使用道具 举报

您需要登录后才可以回帖

本版积分规则

关注我们
千锋好程序员

北京校区(总部):北京市海淀区宝盛北里西区28号中关村智诚科创大厦

深圳西部硅谷校区:深圳市宝安区宝安大道5010号深圳西部硅谷B座A区605-619

杭州龙驰智慧谷校区:浙江省杭州市下沙经济技术开发区元成路199号龙驰智慧谷B座7层

郑州校区:郑州市二七区航海中路60号海为科技园C区10层、12层

Copyright 2007-2019 北京千锋互联科技有限公司 .All Right

京ICP备12003911号-5 京公安网11010802011455号

请您保持通讯畅通1对1咨询马上开启