线程
枫林晚。
没有很帅,但长得实在!
展开
-
手写简易线程池完整代码
package com.thread.threadpool;import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;import java.util.List;/** * 线程池 */public class ThreadPool extends Thread{ ...原创 2020-03-05 19:27:05 · 249 阅读 · 0 评论 -
捕获线程运行期间的异常
package com.thread.threadexception;/** * 捕获线程运行期间的异常 * * * 线程无法抛出异常,因为run()方法无法抛出异常 */public class ThreadException { private final static Integer A=10; private final static Integer B=0...原创 2020-03-05 10:38:43 · 164 阅读 · 0 评论 -
给应用程序注入钩子程序
package com.thread.hook;/** * 给应用程序注入钩子程序 */public class ExitCapture { public static void main(String[] args) { Runtime.getRuntime().addShutdownHook(new Thread(()->{ S...原创 2020-03-05 10:02:47 · 446 阅读 · 0 评论 -
实现一个自己的显示锁Lock
接口package com.thread.createmyselflock;import java.util.Collection;public interface Lock { class TimeOutException extends Exception{ public TimeOutException(String messgae){ ...原创 2020-03-03 15:32:03 · 137 阅读 · 0 评论 -
Java lock 能被中断, synchronized 不能被中断
1、lock是可中断锁,而synchronized 不是可中断锁 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定, 如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断 如果 使用ReentrantLock,如果A不释放,可以使B在等待了足够长的时间以后,中断等待,而干别的事情ReentrantLock获取锁定与三种方式:a...原创 2020-03-03 12:27:25 · 848 阅读 · 0 评论 -
结束线程的方式三
package com.thread.killthread;/**使用守护线程的方式杀死线程*/public class EndOfViolenceToKillThread{private Thread executeThread;private boolean flag = false;public void execute(Runnable task){//执行线程exe...原创 2020-03-02 16:10:53 · 120 阅读 · 0 评论 -
结束线程的方式二
package com.thread.killthread;/** * 用中断的方式杀死线程 */public class InterruptToKillThread extends Thread{ @Override public void run() { //中断方式1// while (true){// Sys...原创 2020-03-02 16:09:48 · 170 阅读 · 0 评论 -
结束线程的方式一
package com.thread.killthread;/** * 设置标志杀死线程 */public class SetFlagForKill extends Thread{ private volatile boolean flag = false; @Override public void run() { while (!flag)...原创 2020-03-02 15:11:10 · 101 阅读 · 0 评论