摘要: ThreadLocal是一个解决线程并发问题的一个类,用于创建线程的本地变量,我们知道一个对象的所有线程会共享它的全局变量,所以这些变量不是线程安全的,我们可以使用同步技术。但是当我们不想使用同步的时候,我们可以选择ThreadLocal变量。 每个线程都会拥有他们自己的Thread变量,他们可以使 阅读全文
posted @ 2018-11-15 01:23 胡金水 阅读(2583) 评论(0) 推荐(0)
摘要: stop方法:他是不安全的,他会停止所有运行中的线程; suspend方法:容易发生死锁,虽然调用suspend方法目标线程会停下来,但是仍然持有之前的锁,其他线程都不能访问锁定的资源,就会造成死锁,除非被“挂起”的线程恢复运行。 阅读全文
posted @ 2018-11-15 01:00 胡金水 阅读(374) 评论(0) 推荐(0)
摘要: 死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力作用,他们将无法推进下去; 活锁:是指两个线程优先级相同,都礼让不走,就这样一直僵持下去; 饿死:在单线程情况下,A、B两个线程,A先执行;A在执行过程中,C线程来了,B让C先执行;C在执行过程中,D 阅读全文
posted @ 2018-11-15 00:49 胡金水 阅读(2582) 评论(0) 推荐(0)
摘要: 答:能,只不过只是一个指向数组的引用,而不是整个数组,如果改变了引用指向的数组,将会受到volatile的保护,但是如果多个线程同时改变数组的元素,volatile关键字就不能起到保护的作用。 阅读全文
posted @ 2018-11-15 00:34 胡金水 阅读(3057) 评论(0) 推荐(0)
摘要: sleep方法: 属于Thread类中的方法;会导致程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持着,当指定时间到了之后,又会自动恢复运行状态;在调用sleep方法的过程中,线程不会释放对象锁。(只会让出CPU,不会导致锁行为的改变) wait方法: 属于Object类中的方 阅读全文
posted @ 2018-11-15 00:30 胡金水 阅读(1357) 评论(0) 推荐(0)
摘要: run()方法: 是在主线程中执行方法,和调用普通方法一样;(按顺序执行,同步执行) start()方法: 是创建了新的线程,在新的线程中执行;(异步执行) 阅读全文
posted @ 2018-11-15 00:23 胡金水 阅读(1815) 评论(0) 推荐(0)
摘要: 面试官:线程池有哪些?分别的作用是什么? 常用的线程池有: 1、newSingleThreadExecutor: 单个线程的线程池,即线程池中每次只有一个线程工作,单线程串行执行任务; 2、newFixedThreadExecutor: 固定数量的线程池,每提交一个任务就是一个线程,直到线程达到线程 阅读全文
posted @ 2018-11-15 00:08 胡金水 阅读(7356) 评论(0) 推荐(0)