摘要:用return也能停止线程,不过还是建议抛出异常的方法,因为可以继续往上抛出,让事件传播
阅读全文
摘要:使用stop释放锁将会导致数据出现不一致的结果。 测试如下 综上所述,表明stop方法会导致数据不同步,不建议使用
阅读全文
摘要:调用stop方法时会抛出java.lang.ThreadDeath异常,但一般情况下这个异常不需要显示的捕捉 方法stop已经作废 因为如果强制让线程停止则会使得一些清理性的工作得不到完成,另外一个就是对锁定对象进行解锁,导致数据得不到同步处理,出现数据不一致。
阅读全文
摘要:使用stop方式暴力停止线程 结果分析,当i只执行到8,子线程就被暴力停止了
阅读全文
摘要:在sleep状态下,停止线程。会进入catch语句,并且清除停止状态值,使其变成false 前一个实验是先sleep后,在执行interrupt() 下面实验先停止线程,在进入sleep 结果分析: 这边由于主线程先执行完了代码,给子线程打了停止标记,当子线程执行时线程停止了,再执行sleep方法,
阅读全文
摘要:测试如下 结果分析,这时cpu切换到了主线程执行了interrupt函数,这时,再进入for循环,前面已经执行到了1234,这时打完标记的子线程已经中断了,这时break跳出当前的for循环,但是下面的for循环外的语句还是 会执行的,因为线程已经打了标记,但是线程并没有被立刻中断 那如何使线程被立
阅读全文
摘要:判断线程是否停止的状态 Thread.java类里面提供了两种方法。 1)this.interrupted():测试当前线程是否已经中断 2)this.isInterrupted():测试线程是否已经中断 测试如下 结果分析: 结果表面当前线程并未停止,因为这个当前线程是main线程,所以打印了两个
阅读全文
摘要:调用interrupt()来停止线程,但是interrupt()方法的使用效果并不像是for+break语句那样,马上就停止循环,调用此方法仅仅是在当前线程中打了一个停止的标记,并不是真正的停止线程。 测试如下 结果分析: 主函数开始执行的是主线程,当执行语句sleep时,切换到了子线程,这时执行i
阅读全文
摘要:getId()方法的作用是取得线程的唯一标识。 结果分析当前执行代码的线程名称为main,线程id值为1
阅读全文
摘要:停止线程是在多线程开发时重要的技术。 停止一个线程可以使用Thread.stop()方法,但不建议使用它,这个方法是不安全的,且已经过时。 在java中有以下3种方法可以终止正在运行的线程 1)使用退出标志,使线程正常退出,也就是当run方法完成后,线程终止 2)使用stop方法强行终止线程,但不推
阅读全文
摘要:方法sleep()的作用是指在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)这个正在执行的线程是指this.currentThread()返回的线程。 测试如下 结果分析: 直接调用run方法,说明此时并没有开启子线程,run函数里的方法都是主线程调用的,所以当线程睡眠也是主线程睡眠,代码顺序依
阅读全文
摘要:方法isAlive()的功能是判断当前线程是否处于活动状态 活动状态是线程已经启动且尚未终止,线程处于正在运行或准备开始运行的状态,就认为线程是存活的。 测试如下 结果分析:上面刚开始还没有执行start()方法,所以begin为false,当开启线程之后,先打印end,说明此时cpu切换到了主线程
阅读全文
摘要:该方法可返回代码段正在被哪个线程调用的信息 结果分析:main方法被名为main的线程调用 测试下面 1 package com.cky.thread; 2 3 /** 4 * Created by chenkaiyang on 2017/12/2. 5 */ 6 public class MyFi
阅读全文
摘要: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
阅读全文
摘要:自定义线程类中实例变量针对其他线程可以有共享与不共享的区分,这在多线程中的交互是一个技术点。 (1)不共享数据的情况 多个线程实例 结果分析,这里一共创建了3个线程实例,每个线程都有各自的count变量,各自递减自己的变量,这就说明这个是变量不共享,不存在多个线程共同访问同一个实例的情况。 (2)共
阅读全文
摘要:使用Runnable创建线程 test类 因为java是单根集继承,不支持多继承,为了改变这个限制,使用runnable接口实现多线程 注:Thread类也实现了Runnerable接口,那说明了构造函数不仅仅可以传入runnable接口对象,也可以传递Thread对象,这样做完全可以将一个Thre
阅读全文
摘要:实现多线程的方法有2种:方法一是继承Thread,方法二是实现Runnerable接口 使用继承Thread类的方法创建多线程的时候,最大的局限性就是不支持多继承,因为java语言的特点就是单继承,因此为了支持多继承,完全可以实现Runnerabe接口的方式。 从图中结果可知 再创建测试类 运行结果
阅读全文
摘要:什么是线程? 线程可以理解成是在进程中独立运行的子任务。 使用多线程有什么优点? 使用多任务操作系统Windows后,可以最大限度地利用CPU的空闲时间来处理其他的任务。 使用多线程技术后,可以在同一时间内运行更多不同种类的任务 单任务的特点就是排队执行,也就是同步,就像是cmd输入一条指令后,必须
阅读全文