<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[papinick的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/papinick</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; papinick]]></copyright><item><title><![CDATA[Java线程死锁]]></title><link>https://blog.youkuaiyun.com/papinick/article/details/116403856</link><guid>https://blog.youkuaiyun.com/papinick/article/details/116403856</guid><author>papinick</author><pubDate>Tue, 11 May 2021 13:46:53 +0800</pubDate><description><![CDATA[线程死锁什么是死锁死锁发生的原因一个必然死锁的程序死锁发生的四个必要条件怎么解决死锁问题解决银行转账死锁问题：改变锁的顺序哲学家就餐问题以及对应的解决方法其它线程活跃性问题活锁饥饿
什么是死锁
死锁发生的原因
一个必然死锁的程序
死锁发生的四个必要条件
怎么解决死锁问题
解决银行转账死锁问题：改变锁的顺序
哲学家就餐问题以及对应的解决方法
其它线程活跃性问题
活锁
饥饿

...]]></description><category></category></item><item><title><![CDATA[Java内存模型]]></title><link>https://blog.youkuaiyun.com/papinick/article/details/116296508</link><guid>https://blog.youkuaiyun.com/papinick/article/details/116296508</guid><author>papinick</author><pubDate>Fri, 30 Apr 2021 17:19:53 +0800</pubDate><description><![CDATA[Java内存模型Jvm内存结构VSJava内存模型VSJava对象模型Jvm内存结构Java对象模型Java对象模型Java内存模型的三点内容重排序可见性原子性
Jvm内存结构VSJava内存模型VSJava对象模型
Jvm内存结构VSJava内存模型VSJava对象模型这三者的概念很容易混淆，从整体方向上对它们进行区分：
Jvm内存结构，和Java虚拟机运行时区域有关。
Java内存模型，和Java的并发编程有关。
Java对象模型，和Java对象在虚拟机中的表现形式有关。
下面来详细了解一下这三个概念，]]></description><category></category></item><item><title><![CDATA[线程安全]]></title><link>https://blog.youkuaiyun.com/papinick/article/details/116228614</link><guid>https://blog.youkuaiyun.com/papinick/article/details/116228614</guid><author>papinick</author><pubDate>Wed, 28 Apr 2021 16:40:48 +0800</pubDate><description><![CDATA[这里写目录标题什么是线程安全三大线程安全问题运行结果错误：a++问题活跃性问题：死锁，活锁，饥饿对象发布和初始化的时候的安全问题两种解决线程安全的办法使用副本解决逸出问题使用工厂模式解决初始化问题四种需要考虑线程安全的情况多线程导致的性能问题
什么是线程安全
当多个线程访问一个对象时，如果不考虑这些线程在运行时环境下的调度和交替执行，也不需要进行额外的同步，或者在调用方进行任何其它的协同操作，调用这个对象的行为都可以获得正确的结果，那这个对象是线程安全的。
三大线程安全问题
运行结果错误：a++问题
两个线]]></description><category></category></item><item><title><![CDATA[如何处理UncaughtException异常]]></title><link>https://blog.youkuaiyun.com/papinick/article/details/116223505</link><guid>https://blog.youkuaiyun.com/papinick/article/details/116223505</guid><author>papinick</author><pubDate>Wed, 28 Apr 2021 09:51:55 +0800</pubDate><description><![CDATA[如何处理UncaughtException异常为什么要处理UncaughtException异常怎么处理UncaughtException异常线程很容易被发现，子线程中的异常不易被发现。子线程抛出的异常无法使用传统方法捕获。直接捕获异常可以提高代码的健壮性。使用UncaughtExceptionHandler处理未捕获的异常
为什么要处理UncaughtException异常
在一个项目中，会有很多UncaughtException异常。如果这些异常没有处理，就有可能把异常信息返回给前端，黑客看到这些异常的]]></description><category></category></item><item><title><![CDATA[final关键字详解]]></title><link>https://blog.youkuaiyun.com/papinick/article/details/116157621</link><guid>https://blog.youkuaiyun.com/papinick/article/details/116157621</guid><author>papinick</author><pubDate>Mon, 26 Apr 2021 16:16:01 +0800</pubDate><description><![CDATA[final关键字详解修饰类修饰方法修饰属性修饰类的属性修饰类的静态属性修饰方法内的变量如何保证一个类对象不可变思考题：final修饰String后发生了什么变化
final关键字可以修饰类、方法、和变量。
修饰类
被final修饰的类不可以被继承。我们经常使用String类，但确没有见过String的子类，那是因为String类是被final修饰的，所以没有类可以继承它。
修饰方法
final可以修饰方法，被final修饰的方法不能被重写。这和被static修饰的方法一样，都不能被子类重写
修饰属性
fin]]></description><category></category></item><item><title><![CDATA[Object和Thread一些和线程阻塞相关的常用方法]]></title><link>https://blog.youkuaiyun.com/papinick/article/details/116140003</link><guid>https://blog.youkuaiyun.com/papinick/article/details/116140003</guid><author>papinick</author><pubDate>Mon, 26 Apr 2021 12:39:59 +0800</pubDate><description><![CDATA[Object和Thread一些和线程相关的常用方法Object中的方法wait()notify()和notifyAll()Thread中的方法sleep()join()yield()Object和Thread中一些方法的区别wait()和sleep()方法比较join()和wait()之间的关联
Object中的方法
wait()
notify()和notifyAll()
Thread中的方法
sleep()
join()
yield()
Object和Thread中一些方法的区别
wait()和sleep]]></description><category></category></item><item><title><![CDATA[线程的六种状态]]></title><link>https://blog.youkuaiyun.com/papinick/article/details/116139479</link><guid>https://blog.youkuaiyun.com/papinick/article/details/116139479</guid><author>papinick</author><pubDate>Sun, 25 Apr 2021 22:38:07 +0800</pubDate><description><![CDATA[线程的六种状态线程有哪六种状态线程之间的状态是如何转换的
线程有哪六种状态
线程的状态一共有六种：NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED
NEW:当创建一个线程对象，还没有调用start()方法。
RUNNABLE：调用了start()方法，不管线程是否被CPU执行，都处于RUNNABLE。
BLOCKED: 线程等待获取对象的监视器锁时。处于BLOCKED状态时，线程无法被中断
WAITING：线程处于无限等待状态，除非被其它线程唤醒或者]]></description><category></category></item><item><title><![CDATA[Java如何正确的启动和停止进程]]></title><link>https://blog.youkuaiyun.com/papinick/article/details/116095341</link><guid>https://blog.youkuaiyun.com/papinick/article/details/116095341</guid><author>papinick</author><pubDate>Sun, 25 Apr 2021 00:20:00 +0800</pubDate><description><![CDATA[Java如何正确的启动和停止进程启动线程的方式：start()停止线程的方式正确停止线程的方式：interrupt()错误停止线程的方式明确被JDK提示禁用的方式：stop()、resume()和suspend()使用volatile修饰的标志位停止线程
启动线程的方式：start()
启动线程的方式只有一种，那就是调用Thread类的start()方法。可以看下这个方法做了哪些事情。
   /**
     * Causes this thread to begin execution; the Jav.]]></description><category></category></item><item><title><![CDATA[java创建线程的方式]]></title><link>https://blog.youkuaiyun.com/papinick/article/details/116081405</link><guid>https://blog.youkuaiyun.com/papinick/article/details/116081405</guid><author>papinick</author><pubDate>Sat, 24 Apr 2021 09:12:01 +0800</pubDate><description><![CDATA[java创建线程的方式有哪些呢？我们一般想到的方式是两种：继承Thread类、实现Runnable接口。但是这两种创建线程的方式并没有本质的区别。从本质上来讲，创建线程的方式只有一种。]]></description><category></category></item></channel></rss>