成功的路上总是离不开贵人的帮助,名师的指点和小人的刺激。

莫怕,过了桥,就翻篇了

2017年12月3日 #

1.11守护线程

摘要: 在java 中有2种线程,1种是守护线程,1种是非守护线程 守护线程是一种特殊的线程,当线程中不存在非守护线程时,则守护线程自动销毁,典型的守护线程就是垃圾回收线程。 测试如下 阅读全文

posted @ 2017-12-03 18:17 痞子陈2016 阅读(126) 评论(0) 推荐(0) 编辑

1.10.4看谁运行的得快

摘要: 测试如下 阅读全文

posted @ 2017-12-03 18:14 痞子陈2016 阅读(103) 评论(0) 推荐(0) 编辑

1.10.3优先级具有随机性

摘要: 继续更改上面1.10.2的优先级使他们俩的优先级差不多 结果说明线程的优先级与打印顺序无关,不要将两者的关系关联,他们的关系有不确定性和随机性 阅读全文

posted @ 2017-12-03 18:12 痞子陈2016 阅读(223) 评论(0) 推荐(0) 编辑

1.10.2线程的优先级的规则性

摘要: 测试 高优先级的线程总是大部分先执行完,但不代表高优先级的线程全部先执行完,而且当线程的优先级等级差距很大时,谁先执行完和代码调用顺序无关,测试如下 C:\itsoft\jdk\bin\java -Didea.launcher.port=7541 "-Didea.launcher.bin.path= 阅读全文

posted @ 2017-12-03 18:09 痞子陈2016 阅读(231) 评论(0) 推荐(0) 编辑

1.10.1优先级具有继承特性

摘要: jdk中有3个常量来定义优先级 public final static int MIN_PRIOPITY = 1; public final static int NORM_PRIOPITY = 5; public final static int MAX_PRIOPITY = 10; 在java中 阅读全文

posted @ 2017-12-03 18:01 痞子陈2016 阅读(236) 评论(0) 推荐(0) 编辑

1.9yield方法

摘要: yield()方法的作用放弃当前的cpu资源,将他让给其他的任务去占用cpu的执行时间,但放弃的时间不确定,有可能刚放弃,马上又获得cpu时间片 测试 上述两种情况运行结果 有注释:48毫秒 无注释:11100毫秒 结果说明了他放弃当前的cpu资源。 阅读全文

posted @ 2017-12-03 17:54 痞子陈2016 阅读(155) 评论(0) 推荐(0) 编辑

1.8.3suspend与resume方法的缺点--不同步

摘要: 结果不同步,程序中使用suspend()得注意。 阅读全文

posted @ 2017-12-03 17:48 痞子陈2016 阅读(190) 评论(0) 推荐(0) 编辑

1.8.2suspend与resume方法的缺点-独占

摘要: 这两个方法使用不当,容易造成公共的同步对象的独占,使得其他线程无法访问公共的同步对象 测试 下面是另一种独占锁 如果改成如下 控制台将不打印main end, 因为当程序运行到println方法内部时,同步锁没有被释放 阅读全文

posted @ 2017-12-03 17:45 痞子陈2016 阅读(430) 评论(0) 推荐(0) 编辑

1.8.1suspend与resume方法使用

摘要: 暂停线程意味着线程还能恢复运行 suspend()方法暂停线程。resume()恢复线程 测试如下 结果分析 线程确实被暂停了,而且还可以恢复成运行的状态。 阅读全文

posted @ 2017-12-03 16:14 痞子陈2016 阅读(279) 评论(0) 推荐(0) 编辑

1.7.8使用return 停止线程

摘要: 用return也能停止线程,不过还是建议抛出异常的方法,因为可以继续往上抛出,让事件传播 阅读全文

posted @ 2017-12-03 16:01 痞子陈2016 阅读(737) 评论(0) 推荐(0) 编辑

1.7.7释放锁的不良后果

摘要: 使用stop释放锁将会导致数据出现不一致的结果。 测试如下 综上所述,表明stop方法会导致数据不同步,不建议使用 阅读全文

posted @ 2017-12-03 15:55 痞子陈2016 阅读(244) 评论(0) 推荐(0) 编辑

1.7.6方法stop()与java.lang.threadDeath异常

摘要: 调用stop方法时会抛出java.lang.ThreadDeath异常,但一般情况下这个异常不需要显示的捕捉 方法stop已经作废 因为如果强制让线程停止则会使得一些清理性的工作得不到完成,另外一个就是对锁定对象进行解锁,导致数据得不到同步处理,出现数据不一致。 阅读全文

posted @ 2017-12-03 15:45 痞子陈2016 阅读(1687) 评论(0) 推荐(0) 编辑

1.7.5能停止的线程-暴力停止

摘要: 使用stop方式暴力停止线程 结果分析,当i只执行到8,子线程就被暴力停止了 阅读全文

posted @ 2017-12-03 15:38 痞子陈2016 阅读(158) 评论(0) 推荐(0) 编辑

1.7.4在沉睡中停止

摘要: 在sleep状态下,停止线程。会进入catch语句,并且清除停止状态值,使其变成false 前一个实验是先sleep后,在执行interrupt() 下面实验先停止线程,在进入sleep 结果分析: 这边由于主线程先执行完了代码,给子线程打了停止标记,当子线程执行时线程停止了,再执行sleep方法, 阅读全文

posted @ 2017-12-03 15:32 痞子陈2016 阅读(141) 评论(0) 推荐(0) 编辑

1.7.3能停止的线程-异常法

摘要: 测试如下 结果分析,这时cpu切换到了主线程执行了interrupt函数,这时,再进入for循环,前面已经执行到了1234,这时打完标记的子线程已经中断了,这时break跳出当前的for循环,但是下面的for循环外的语句还是 会执行的,因为线程已经打了标记,但是线程并没有被立刻中断 那如何使线程被立 阅读全文

posted @ 2017-12-03 15:10 痞子陈2016 阅读(150) 评论(0) 推荐(0) 编辑

1.7.2判断线程是否是停止状态

摘要: 判断线程是否停止的状态 Thread.java类里面提供了两种方法。 1)this.interrupted():测试当前线程是否已经中断 2)this.isInterrupted():测试线程是否已经中断 测试如下 结果分析: 结果表面当前线程并未停止,因为这个当前线程是main线程,所以打印了两个 阅读全文

posted @ 2017-12-03 14:43 痞子陈2016 阅读(487) 评论(0) 推荐(0) 编辑

1.7.1停止不了的线程

摘要: 调用interrupt()来停止线程,但是interrupt()方法的使用效果并不像是for+break语句那样,马上就停止循环,调用此方法仅仅是在当前线程中打了一个停止的标记,并不是真正的停止线程。 测试如下 结果分析: 主函数开始执行的是主线程,当执行语句sleep时,切换到了子线程,这时执行i 阅读全文

posted @ 2017-12-03 14:17 痞子陈2016 阅读(169) 评论(0) 推荐(0) 编辑

1.6getId()方法

摘要: getId()方法的作用是取得线程的唯一标识。 结果分析当前执行代码的线程名称为main,线程id值为1 阅读全文

posted @ 2017-12-03 14:07 痞子陈2016 阅读(487) 评论(0) 推荐(0) 编辑

1.7停止线程

摘要: 停止线程是在多线程开发时重要的技术。 停止一个线程可以使用Thread.stop()方法,但不建议使用它,这个方法是不安全的,且已经过时。 在java中有以下3种方法可以终止正在运行的线程 1)使用退出标志,使线程正常退出,也就是当run方法完成后,线程终止 2)使用stop方法强行终止线程,但不推 阅读全文

posted @ 2017-12-03 14:07 痞子陈2016 阅读(130) 评论(0) 推荐(0) 编辑

1.5sleep()方法

摘要: 方法sleep()的作用是指在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)这个正在执行的线程是指this.currentThread()返回的线程。 测试如下 结果分析: 直接调用run方法,说明此时并没有开启子线程,run函数里的方法都是主线程调用的,所以当线程睡眠也是主线程睡眠,代码顺序依 阅读全文

posted @ 2017-12-03 14:06 痞子陈2016 阅读(218) 评论(0) 推荐(0) 编辑

导航