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

莫怕,过了桥,就翻篇了

随笔分类 -  多线程

上一页 1 2 3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.4isAlive()方法
摘要:方法isAlive()的功能是判断当前线程是否处于活动状态 活动状态是线程已经启动且尚未终止,线程处于正在运行或准备开始运行的状态,就认为线程是存活的。 测试如下 结果分析:上面刚开始还没有执行start()方法,所以begin为false,当开启线程之后,先打印end,说明此时cpu切换到了主线程 阅读全文

posted @ 2017-12-03 13:42 痞子陈2016 阅读(429) 评论(0) 推荐(0)

1.3currentThread()方法
摘要:该方法可返回代码段正在被哪个线程调用的信息 结果分析:main方法被名为main的线程调用 测试下面 1 package com.cky.thread; 2 3 /** 4 * Created by chenkaiyang on 2017/12/2. 5 */ 6 public class MyFi 阅读全文

posted @ 2017-12-03 13:09 痞子陈2016 阅读(218) 评论(0) 推荐(0)

1.2.4注意Sysyem.out.println与i--
摘要:1 package com.cky.test; 2 3 import com.cky.thread.MyThreadThird; 4 5 /** 6 * Created by chenkaiyang on 2017/11/27. 7 */ 8 public class Test3 { 9 publi 阅读全文

posted @ 2017-12-02 16:03 痞子陈2016 阅读(256) 评论(0) 推荐(0)

1.2.3实例变量与线程安全
摘要:自定义线程类中实例变量针对其他线程可以有共享与不共享的区分,这在多线程中的交互是一个技术点。 (1)不共享数据的情况 多个线程实例 结果分析,这里一共创建了3个线程实例,每个线程都有各自的count变量,各自递减自己的变量,这就说明这个是变量不共享,不存在多个线程共同访问同一个实例的情况。 (2)共 阅读全文

posted @ 2017-12-02 15:43 痞子陈2016 阅读(243) 评论(0) 推荐(0)

1.2.2实现Runnable接口
摘要:使用Runnable创建线程 test类 因为java是单根集继承,不支持多继承,为了改变这个限制,使用runnable接口实现多线程 注:Thread类也实现了Runnerable接口,那说明了构造函数不仅仅可以传入runnable接口对象,也可以传递Thread对象,这样做完全可以将一个Thre 阅读全文

posted @ 2017-12-02 15:12 痞子陈2016 阅读(300) 评论(0) 推荐(0)

1.2.1继承Thread类
摘要:实现多线程的方法有2种:方法一是继承Thread,方法二是实现Runnerable接口 使用继承Thread类的方法创建多线程的时候,最大的局限性就是不支持多继承,因为java语言的特点就是单继承,因此为了支持多继承,完全可以实现Runnerabe接口的方式。 从图中结果可知 再创建测试类 运行结果 阅读全文

posted @ 2017-12-02 14:57 痞子陈2016 阅读(196) 评论(0) 推荐(0)

1.1进程和多线程的概念
摘要:什么是线程? 线程可以理解成是在进程中独立运行的子任务。 使用多线程有什么优点? 使用多任务操作系统Windows后,可以最大限度地利用CPU的空闲时间来处理其他的任务。 使用多线程技术后,可以在同一时间内运行更多不同种类的任务 单任务的特点就是排队执行,也就是同步,就像是cmd输入一条指令后,必须 阅读全文

posted @ 2017-12-02 14:27 痞子陈2016 阅读(159) 评论(0) 推荐(0)

上一页 1 2 3

导航