摘要:一 .什么是String的常量池特性 对于字符串对象有两种创建方法,如下: 直接赋值法: 创建对象法: 第一种方法是直接创建在常量池中的,下面可以看到区别: 也就是说明在常量池中创建的对象是同一个对象,而使用new关键字创建的变量是重新分配内存的,是两个不同的对象。 二.在多线程中出现的问题 代码如
阅读全文
摘要:一.回顾学习内容 在前面几篇博客中我我们已经理解了synchronized对象锁、对象锁的重入、synchronized方法块、synchronized非本对象的代码块, 链接:https://www.cnblogs.com/SAM-CJM/category/1314992.html 我们来总结一下
阅读全文
摘要:本文仅仅是为了说明synchronized关键字同步的是对象不是方法,列子的确有失偏颇。 一.明确一点synchronized同步的是对象不是方法也不是代码块 我有关synchronized同步的是对象讨论的博客在这里:https://www.cnblogs.com/SAM-CJM/p/979826
阅读全文
摘要:一.代码块和方法之间的区别 首先需要知道代码块和方法有什么区别: 构造器和方法块,构造器可以重载也就是说明在创建对象时可以按照不同的构造器来创建,那么构造器是属于对象,而代码块呢他是给所有的对象初始化的。底下看一个列子: 结果为: 发现代码块比构造器早执行,而且代码块是所有的对象都要执行的。 现在我
阅读全文
摘要:问题导入:如果一个线程调用了一个对象的同步方法,那么他还能不能在调用这个对象的另外一个同步方法呢? 这里就是synchronized锁重入问题。 一.synchronized锁重入 来看下面的代码: .这个是三个同步方法的类 线程类,在run方法中调用一号同步方法: 结果如下: 总结:可以看出一个线
阅读全文
摘要:一.运用synchronized关键字 首先我们来看看一个多线程中线程不安全的列子 代码如下: 共享数据类: 线程测试类: 在这个列子中run方法没有使用关键字synchronized,那么就会造成线程不安全,结果如下: 那么当我们使用关键字synchronized后结果就会同步了,结果如下: 那么
阅读全文
摘要:一.停止线程会带来什么? 对于单线程中,停止单线程就是直接使用关键字return或者break,但是在停止多线程时是让线程在完成任务前去开启另外一条线程,必须放弃当前任务,而这个过程是不可预测,所以必须去做好防备。 二.认识停止线程的几个方法 2.1三个被弃用的方法 stop()、suspend()
阅读全文
摘要:一.currentThread()方法 currentThread方法就是返回当前被调用的线程。 该方法为一个本地方法,原码如下: 可以看出他返回的是一个线程对象。 下面来看一个列子: 结果如下: 除了run方法是在一个被自动取名为Thread-0的线程中其他的两个都在main方法中。 但是我们不使
阅读全文
摘要:一.使用多线程的两种方法 使用多线程的两种方法有:继承Thread类和实现runable接口。 二.继承Thread类 来看一下thread类的源代码: 首先可以看出thread类也是实现Runable接口的run方法如下: 下面就是一个创建继承Thread的类的列子: 结果如下 首先我们需要明白在
阅读全文