- 博客(15)
- 收藏
- 关注
原创 java虚拟机三之Class文件解读
1.写一个java文件,代码如下:package classTest;/** * Created by * Date : 2018/7/25 18:20 */public class Main { public static final int m=0; public int inc(){ return m+1; }}2.运行jav...
2018-07-27 11:29:12 651
原创 java虚拟机二之溢出实践
1.java堆溢出看代码:注意,java_opts要设置为:如果不懂java_opts,自己百度去。-server -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:/test/ -Xms 堆的最小内存,我们这儿设置为20M-Xmx 堆的最大内存,我们这儿也设置为20M-XX:+Heap...
2018-07-24 13:31:12 268
原创 java虚拟机一之java内存区域
说在虚拟机篇开头的话,其实把这些文章复制粘贴一点用也没有,最主要的是要理解和实践。尤其是实践。这一篇文章中提到的相关溢出异常,如何让程序出现溢出异常的实践,会在后面的章节说明。1.java虚拟机在执行java程序时,会把内存分为若干个数据区域。这些数据区域包括:程序计数器,java虚拟机栈,本地方法栈,方法区和堆2.程序计数器这一块内存空间较小,它记录的是正在执行的Class字...
2018-07-20 16:34:36 220 1
原创 java线程九之饥饿死锁,死锁与活锁
1.老规矩的吐槽,网上查这块内容的时候,全是理论方面的说明和复制粘贴,没找到一个完全用代码说明的例子。2.饥饿死锁直接上代码:/** * Created by * Date : 2018/7/19 18:12 */public class Main { public static void main(String[] args){ final Exe...
2018-07-20 13:03:55 663
原创 java线程八之Callable
1.Callable是干什么用的?前一个章节关于线程池的,但是小伙伴们有没有发现,这些线程池虽然能正常跑线程,但如果遇到获取每个线程执行后返回的值时就显得力不从心了。Future中的参数Runnable也不能返回线程返回的值,因为它是void类型的返回值。所以如果要获取线程执行后返回的值就要靠Callable了。2.直接上代码:/** * Created by * Date :...
2018-07-19 17:37:27 285
原创 java线程七之线程池
1.java常用的线程池ExecutorService cachedThreadPool = Executors.newCachedThreadPool();//缓存线程池ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);//固定大小线程池ExecutorService singleThreadExecut...
2018-07-19 17:10:17 193
原创 java线程六之闭锁,栅栏与计数信号量
先直接上各个的示例,再看各自的区别。1.闭锁,等待锁的计数器为0才会执行,否则会一直等待,示例如下:/** * Created by * Date : 2018/7/19 10:33 * 闭锁 */public class Main { private CountDownLatch countDownLatch=new CountDownLatch(3); p...
2018-07-19 12:02:58 635
原创 java线程五之Lock
1.有了synchronized,为什么还用Lock?Lock的应用场景解决获取锁的等待问题如果使用synchronized,线程A要想释放锁,要么线程A执行完毕,要么线程A执行发生异常才能释放锁。当线程A执行遇到阻塞等情况,线程B要想获取这个锁,必须一直等到线程A释放锁后才能获取锁并执行线程B的程序。而使用用Lock的tryLock(Long time)方法,可以使线程只等待一定的...
2018-07-18 17:36:15 290
原创 java线程四之线程的方法
不知道怎么回事,先写在word文档上的,但是保存后变的很乱。。1.锁对象的方法:wait(),notify(),notifyAll()2.线程的方法:join(),interrupt(),sleep() ,其中stop(),suspend()由于不安全,已经建议不再使用3.Wait()方法释放锁并让自己一直处于等待状态。看下面的例子:/** * Created by...
2018-07-17 11:11:29 175
原创 java线程三之安全与不安全
1. 线程不安全的情况a) 竞态条件,也就是先检查后执行、查询-修改-更新等复合操作举例如下:public class Test { private int i=0; public void test()throws Exception{ Thread.sleep(1000); i=i+1; System....
2018-07-09 13:32:01 166
原创 java线程二之synchronized
1. 当存在多个线程操作共享数据时,必须要保证在同一时刻有且只有一个线程在操作共享数据,其它线程必须等到该线程处理完后再进行操作。在java中,用关键字synchronized可以做到这一点。 2. Synchronized有三种应用方式a) 修饰代码块Synchronized(this){ doSomething();}b) ...
2018-07-03 10:50:06 121
原创 java线程一之volatile
1. 什么叫线程安全?当多个线程访问某个类时,这个类始终能表现出正确的行为,我们称这个类是线程安全的 2. Java内存模型,也就是java线程是如何存取共享变量的Java的所有变量都存储在主内存中,每个线程都有自己独立的工作内存,每创建一个线程,则会为该线程分配一个独立的工作内存,线程与线程之间的工作内存不可相互调用。线程在操作变量时,会从主内存中将变量拷...
2018-07-02 15:06:59 171
原创 java基础--序列化一之使用
1.什么是序列化序列化就是将对象的状态信息转换为可以存储或传输的形式,使对象可以持久化的保存。2.什么是持久化就是可以长久的保存对象。比如将对象保存在文件中、将对象保存在网络中、远程的传输获取对象,随取随用。3.java中实现对象的序列化有两种方法实现Serializable接口 实现Externalizable接口4.实现Serializable接口的代码User类:...
2018-05-29 18:34:07 214
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人