线程-死锁
摘要:有多个线程执行的程序中,某个线程t1需要锁住两个对象obj1和obj2才能完成任务,而线程t2也需要锁住这两个对象,t1首先锁住obj1,t2首先锁住obj2,t1需要等待t2将obj2的锁放开,而t2也需要等待t1将obj1放开才能执行完,此时便进入了死锁状态。 死锁演示程序如下: 1 p...
阅读全文
线程-同步
摘要:1 import java.util.*; 2 public class thd implements Runnable 3 { 4 Timer timer = new Timer(); 5 public static void main(String args[]) 6 ...
阅读全文
线程-方法
摘要:1、sleep()使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIOR...
阅读全文
线程-初步
摘要:一、java中线程的两种方式: 1.通过实现Runnable()接口; 2.通过继承Thread类来实现;下面我们分别来实现这两种方式: 1.实现Runnable()接口 1 public class thd 2 { 3 public static void main(String a...
阅读全文
JAVA中“==”和equals
摘要:A."=="可用于基本类型和引用类型: 当用于基本类型时候,是比较值是否相同;1==2; false; 当用于引用类型的时候,是比较是否指向同一个对象。B.基本类型int、char、float等没有equals方法,equals只比较值(对象中的内容)是否相同(相同返回true)。C.一般的类,...
阅读全文
C/C++ 内存分类与注意事项
摘要:五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制...
阅读全文