
Thread
大写的R
活着就好。。
展开
-
异常法停止线程-T1113
package 多线程技能1;/** * 能停止线程——异常法 *//** * 测试代码 */class MyThreadT1113 extends Thread{ @lombok.SneakyThrows @Override public void run() { super.run(); try { for (int i=0;i<5000;i++){ if(interru原创 2021-01-01 00:49:11 · 189 阅读 · 1 评论 -
判断线程是否停止状态-T1112
package 多线程技能1;/** * 判断线程是否为停止状态 * 在java的SDK中,提供了两个方法判断线程是否停止的方法 * 1)public static boolean interrupt():测试currentThread()是否已经中断 * 2)public boolean this.isInterrupted():测试this关键字所在类的对象是否已经中断 * * this.isInterrupted():测试当前线程是否已经中断,当前线程是指运行this.int原创 2021-01-01 00:47:22 · 389 阅读 · 0 评论 -
停止不了的线程-T1111
package 多线程技能1;import java.util.Map;/** * 停止不了的线程 * 调用interrupt方法来终止线程,但interrupt方法的使用效果并不像for+break * 语句那样,马上就停止循环。调用interrupt方法仅仅是在当前线程中做了一个 * 停止的标记,并不是真正停止线程 * */class MyThread extends Thread{ @Override public void run() {原创 2020-12-30 12:44:31 · 120 阅读 · 0 评论 -
Serclet技术造成的非技术线程安全问题与解决方案-T129
package 多线程技能1;/** * Serclet技术造成的非技术线程安全问题与解决方案 * 非线程安全问题是指多个线程对同一个对象中的同一个实例变量实例进行操作时 * 会出现值被更改、值不同步的情况,进而影响程序执行流程。 *//** * 对运行结果的解释 * 1)Alogin线程执行了public static void doPost(String userName,String password)方法。 * 对username和password传入值a和aa。 * 2)Al原创 2020-12-30 12:32:54 · 109 阅读 · 0 评论 -
实例变量共享造成的非线程安全问题与解决方案-T128
package 多线程技能1;/**实例变量共享造成的非线程安全问题与解决方案 */class MyTheard extends Thread{ private int count =5; public MyTheard(String name){ super(); //设置线程姓名 this.setName(name); } @Override synchronized public void run() {原创 2020-12-30 12:23:25 · 210 阅读 · 1 评论 -
使用Runnable接口实现多线程的优点-T126
package 多线程技能1;/** * 使用Runnable接口实现多线程的优点 * 因为java是单继承的 一个类的父类继承了Thread那么,当我们将该类加入多线程时 就只能使用Runable接口了 * 多线程必使用Runnable接口 */class Aserver extends Thread{ public void A_mathod(){ System.out.println("A_方法执行!"); }}class Bserver extend原创 2020-12-30 12:17:10 · 255 阅读 · 0 评论 -
暂停线程-T112
package 多线程技能1;/** * 暂停线程 * 暂停线程意味着此线程还可以恢复运行,在java多线程中,可以使用suspend() * 方法暂停线程,使用resume()方法来恢复线程的执行 * * stop()方法用于销毁线程对象,如果想继续运行线程,必须使用 * start()方法重写启动线程,而suspend()方法用于让线程不 * 再执行任务,线程对象并不销毁,在当前所执行的代码处暂停,未来 * 还可恢复运行。 *//** * 测试类 *原创 2020-12-30 12:14:48 · 171 阅读 · 0 评论 -
getId()方法-T110
package 多线程技能1;/** * getId()方法: * getId()方法用于取得线程的唯一标识 */public class T110 { public static void main(String[] args) { Thread thread=Thread.currentThread(); System.out.println(thread.getName()+" "+thread.getId()); }}...原创 2020-12-30 12:12:22 · 1049 阅读 · 0 评论 -
static Map<Thread,StaticTraceElement[]>getAllStackTrace()-T19
package 多线程技能1;import java.util.Iterator;import java.util.Map;/** * static Map<Thread,StaticTraceElement[]>getAllStackTrace() * 返回所有活动线程的堆栈跟踪信息的一个映射。映射键是线程,而每一个映射值都是一个StaticTraceElement数组, * 该数组表示相应Thread的堆栈转储。返回的堆栈跟踪的格式都是针对getStaticTrace方法指定原创 2020-12-30 12:10:47 · 150 阅读 · 0 评论 -
StackTraceElement[]getStackTrace()-T17
package 多线程技能1;/** * StackTraceElement[]getStackTrace() * 返回一个表示该线程对跟踪元素数组。如果该线程尚未启动或已经终止, * 则该方法将返回一个0长度的数组。如果返回的数组不是0长度,则第一 * 个元素代表堆栈顶,它是该数组最新的方法调用,最后一个元素代表堆 * 栈底。 */class Test2{ public void a(){ b(); } private void b() {原创 2020-12-30 12:06:41 · 175 阅读 · 0 评论 -
Sleep()-(指定毫秒数+纳秒数)-T16
package 多线程技能1;/** * Sleep(long millis,int nanos):在指定的毫秒数加指定纳秒数内让当前正在执行的线程休眠 * ,此操作受到系统计时器和调度程序的精确度和准确性的影响 */ class Test1{ public Test1() throws InterruptedException { long beginTiome=System.currentTimeMillis(); Thread.sleep(20原创 2020-12-30 12:04:29 · 335 阅读 · 0 评论 -
sleep()-T15
package 多线程技能1;/** *sleep()方法:在指定时间(毫秒)内让当前“正在执行的线程休眠(暂停执行), * 这个正在执行的线程是指由this.currentThread()返回的线程。 */class MyThreadSleep extends Thread{ @Override public void run() { try { System.out.println("run threadName="+currentThr原创 2020-12-30 12:01:29 · 143 阅读 · 1 评论 -
isAlive()方法-T14
package 多线程技能1;/** * isAlive()方法:判断当前线程是否还活着; * 活着:线程已经启动尚且未终止的状态 正在运行活着准备开始运行的状态 */class MyThreadIsAlive extends Thread{ @Override public void run() { //输出当前线程是否存活 System.out.println("run=="+this.isAlive()); }}class Co原创 2020-12-25 13:49:00 · 193 阅读 · 0 评论