线程

补充以前的。equals:返回两个对象内容是否相等。

hashcode:返回两个对象的哈希值是否相等。

hashcode性能优化手段,它并不是代表一个对象的物理地址,其真正含义是代表对象在缓存中的唯一键,它的作用是用来在set集合中判断对象是否重复提高性能的。set集合判断重复是先调用hashcode方法 然后再调用equals方法。

hashcode值不是对象一产生出来就绑定了的,是在第一次调用对象的hashcode值时才在缓存中绑定的。

线程:线程就是进程内部运行的独立分支。其特点是共享内存地址空间。线程的切换成本比进程的切换成本低,多线程齐头并进,GC回收线程。

线程的实现方式1,继承Thread类,并重写run方法,run方法只负责做这个线程的事情,开启线程要调用Start();方法,该方法会为线程分配资源,然后自动调用run();方法。如果直接调用run();方法,那么久是普通的方法调用。

线程的实现方式2,实现Runnable接口,同样要重写run();方法,然后创建一个Thread对象,把Runnable接口的实现对象传入,再调用实现Thread接口的对象的Start();方法。(例:MyRun类实现了Runnable接口 MyRun my = new MyRun();   Thread th = new Thread(my);   th.start();)

线程的五钟状态:1.新建状态(new 出来的时候) 2.就绪(调用start()方法,分配完资源,调用run方法之前) 3.运行(调用run()方法) 4.死亡(run()方法的结束,进行资源的回收清理动作) 5,。中断(在运行当中,这个线程由于种种原因没有被CPU执行的时候)

造成线程中断的五个原因:1.CPU正在执行其他线程。2.由于输入输出的等待,造成线程的中断(阻塞)。3.线程休眠状态(sleep();主动调用,给它一个毫秒数)4.等待(wait();一般等待和唤醒是一对的有等待就有唤醒notify();)5.挂起(yield();)强制让某个线程退出。

当多个线程同时访问一个资源的时候,有可能造成该资源的混乱,为保证该资源每次只能被一个线程使用,我们要使用同步技术,在资源身上加关键字synchronized.

还有一种方法是在调用资源的线程身上使用同步块。

原文地址:https://www.cnblogs.com/ZXiaocui/p/6250394.html