第一章:多线程---基本API

  1. thread.start() 和 thread.run() 的区别
    thread.start()方法通知“线程规划器”。就是让系统安排一个时间来调用thread中的run()
    直接用thread.run() 就不是异步的了,而是同步的,是直接由main线程调用的。线程对象不交个“线程规划器”,
    必须等run()执行完了,后面的程序才能执行。

  2. //线程共享数据
    MyThreadDataSelf myThreadDataSelf = new MyThreadDataSelf(“线程”);
    Thread a = new Thread(myThreadDataSelf, “A”);
    Thread b = new Thread(myThreadDataSelf, “B”);
    Thread c = new Thread(myThreadDataSelf, “C”);
    Thread d = new Thread(myThreadDataSelf, “D”);

    a.start();
    b.start();
    c.start();
    d.start();

  3. 留意i-- 与println() 联合用时引发线程安全问题 println( …(i–) ).虽然println方法内部是同步的,
    但i–的操作却是在进入println() 之前发生的,所以有发生非安全问题的概率。

  4. Thread.currentThread().getName() 代码段正在被哪个线程调用
    xxThread.isAlive() 判断当前线程是否处于活动状态
    Thread.sleep() 休息一下
    xxThread.getId() 取得线程的唯一标识

  5. 停止线程的方式
    a, run()执行完,正常停止
    b, stop()强行停止,和suspend()和resume()一样,不推荐使用,可能会有不可预料的后果
    强制停止可能导致一些清理工作得不到完成,或者对锁定的对象进行了解锁,导致数据
    得不到同步处理,出现数据不一致的问题。
    c, interrupt,但这个方法不能终止一个正在运行的线程,还需要加一个条件。
    this.interrupted():测试当前线程是否已经是中断状态,执行后具有将状态标志清除为false的功能。
    this.isinterrupted(): 测试线程Thread对象是否已经是中断状态,但是不能清除标志
    d, 异常法 if(this.interrupted) {…; break}.但这依然有问题,如果for循环下面还有语句,还是会执行。
    e, 改进不在break;直接抛异常 if(this.interrupted) {…; throw new InterruptedException}

  6. 线程的挂起suspen()和恢复resume()
    这两个方法有缺点
    —独占。如果使用不当,极容易造成公共的同步对象的独占,使得其他线程无法访问公共同步对象。
    (这个没看懂—主要是赖)
    —不同步。

  7. yield()方法:放弃当前的cpu资源, 将它让给其他任务去占用cpu执行时间,但是放弃的时间不确定,
    有可能马上放弃,马上又获得CPU时间片。

  8. 线程的优先级
    设置优先级有组于帮助“线程规划器”确定下一次选择哪一个线程来优先执行。
    setPriority();
    JDK线程优先级分为1到10,不在这个范围就抛异常。JDK使用3个常量来预设置定义优先级的值1, 5, 10;
    高优先级的线程总是大部分先执行完,但不代表高优先级的线程全部执行完。
    也就是说,优先级和执行顺序有一定关系,但不能决定。 CPU决策的过程是非常复杂的。

  9. 守护线程
    java线程分两种:用户线程, 守护线程(daemon)
    只要还有一个用户线程在,那守护线程就一定在。用户线程一个都没有了,那守护线程自动销毁,
    最典型的就是垃圾回收线程, 最典型的应用就是垃圾回收器。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值