- 博客(28)
- 资源 (20)
- 问答 (4)
- 收藏
- 关注
原创 从头认识多线程-目录
第一章 回顾多线程基础1.1 多线程的创建1.2 共享变量与线程安全简介1.3 currentThread()1.4 isAlive()和Sleep()1.5 interrupt()和isInterrupt()1.6 迫使线程停止的方法-异常法1.7 迫使线程停止的方法-异常法的扩展(Sleep的Exception)1.8 迫使线程停止的方法-暴力Stop方法1.9 迫使线程停止的方法-retur
2016-04-20 22:05:27 3141
原创 从头认识多线程-2.8 同步方法的隐患
这一章节我们来讨论一下同步方法的隐患。1.同步虽然给我们带来数据的一致性,但是,同时也降低了性能,代码清单:package com.ray.deepintothread.ch02.topic_8;import java.sql.Time;/** * * * * @author RayLee * */public class ThreatOfSynch { public
2016-04-29 11:11:22 4601
原创 从头认识多线程-2.7 同步是不具备继承性的
这一章节我们来讨论一下同步是不具备继承性的。1.代码清单package com.ray.deepintothread.ch02.topic_7;/** * * * * @author RayLee * */public class SynchronizationDoesNotHaveInheritance { public static void main(String[
2016-04-29 10:33:02 2496
原创 从头认识多线程-2.5 锁的可重入性
这一章节我们来讨论一下可重入锁。1.什么是可重入锁?一个线程在执行一个带锁的方法,该方法中又调用了另一个需要相同锁的方法,则该线程可以直接执行调用的方法,而无需重新获得锁。2.特性:(1)同一对象,不同方法,可以获取同样的锁,然后重入package com.ray.deepintothread.ch02.topic_5;public class ReGetInTheLock { public
2016-04-27 22:38:51 2286
原创 从头认识多线程-2.4 脏读(DirtyRead)
这一章节我们来讨论一下脏读(DirtyRead)。1.为什么出现脏读?因为代码没有做同步,虽然set方法同步,但是由于get方法一般都会忘了,导致读的值是被写过的2.代码清单(1)由于程序没有同步,并且执行太快,导致脏读package com.ray.deepintothread.ch02.topic_4;public class DirtyRead { public static void
2016-04-25 23:00:51 7993
原创 从头认识多线程-2.3 synchronized持有对象锁与类锁的不同点
这一章节我们来讨论游戏,synchronized持有对象锁与类锁的不同点-两种锁是并行的东西,没有交集。1.同步持有对象锁或者类锁package com.ray.deepintothread.ch02.topic_3;public class SynchInstance5 { public static void main(String[] args) throws InterruptedE
2016-04-24 23:01:02 4664
原创 从头认识多线程-2.2 synchronized持有对象锁与类锁的相同点
这一章节我们来讨论一下synchronized持有对象锁。1.当所有方法都不使用同步的时候代码清单package com.ray.deepintothread.ch02.topic_2;public class SynchInstance1 { public static void main(String[] args) throws InterruptedException { MyT
2016-04-24 22:33:48 4548
原创 从头认识java-特辑-你不知道的main函数
这一章节我们来讨论一下main函数。对于这个函数大家都不陌生,而且都习以为常,但是其中有一些东西,还是值得我们去总结的。1.普通的mainpackage com.ray.test;public class MainTest { public static void main(String[] args) { }}没什么特别,就是一个main的空方法2.没有static的mainpa
2016-04-21 22:49:47 2745 4
原创 从头认识java-特辑-你不知道的static与final的位置问题
这一章节我们来讨论一下你不知道的static与final的位置问题。代码清单package com.ray.test;public class StaticAndFinalPositionTest { private final static int id1 = 0; private static final int id2 = 0; // private static int f
2016-04-21 22:39:43 3847 1
原创 从头认识多线程-2.1 局部变量与实例变量的线程安全
这一章节我们来讨论一下局部变量与实例变量的线程安全。1.结论局部变量线程安全的实例变量不是线程安全的2.代码清单package com.ray.deepintothread.ch02.topic_1;public class ThreadSafeOfLocalVariable { public static void main(String[] args) throws Interrupte
2016-04-21 22:22:17 8095
原创 从头认识多线程-1.17 守护线程setDaemon()
这一章节我们来讨论一下守护线程。1.特性守护线程是需要等待其他用户线程结束后才结束的线程,俗称保姆线程2.源码解析/** * Marks this thread as either a {@linkplain #isDaemon daemon} thread * or a user thread. The Java Virtual Machine exits when the
2016-04-20 22:01:41 4668
原创 从头认识多线程-1.16 对比不同的优先级
这一章节我们来做一个测试,对比一下不同的优先级会形成怎样的结果?1.代码清单package com.ray.deepintothread.ch01.topic_16;import java.util.Random;public class PrioritySample2 { public static void main(String[] args) throws Interrupted
2016-04-19 22:41:21 2876
原创 从头认识多线程-1.15 优先级特性-继承性
这一章节我们来讨论一下优先级的特性-继承性。1代码清单package com.ray.deepintothread.ch01.topic_15;public class PrioritySample { public static void main(String[] args) throws InterruptedException { ThreadOne threadOne = ne
2016-04-19 22:11:52 1827
原创 从头认识多线程-1.14 优先级
这一章节我们来讨论一下优先级的使用。1.源码主要就是set和get方法,get比较简单,不列举,下面是set的方法public final void setPriority(int newPriority) { ThreadGroup g; checkAccess(); if (newPriority > MAX_PRIORITY || newPri
2016-04-19 21:55:57 1471
原创 从头认识多线程-1.13 yield在使用前后,计算时间的差别
这一章节我们讨论yield的使用。1.yield的作用当我们使用这个方法的时候,我们会让出cup的控制时间,让其他线程计算2.代码清单package com.ray.deepintothread.ch01.topic_13;public class YieldSample { public static void main(String[] args) throws InterruptedE
2016-04-18 11:50:24 1811
原创 从头认识多线程-1.12 suspend和resume缺点-不同步
这一章节我们继续来讨论suspend和resume的另一个缺点-不同步。1.代码清单package com.ray.deepintothread.ch01.topic_12;public class SuspendUnSynch { public static void main(String[] args) throws InterruptedException { MyObject
2016-04-18 11:38:00 1857 1
原创 从头认识多线程-1.11 suspend和resume缺点-独占
这一章节我们来讨论一下suspend缺点-独占。1.return的失效package com.ray.deepintothread.ch01.topic_11;public class SuspendMonopolize_1 { @SuppressWarnings("deprecation") public static void main(String[] args) throws In
2016-04-17 21:51:38 1928
原创 从头认识多线程-1.10 暂停与恢复线程
这一章节我们来讨论一下暂停与恢复线程,也就是resume与suspend1.代码清单package com.ray.deepintothread.ch01.topic_10;public class RusumeAndSuspend { @SuppressWarnings("deprecation") public static void main(String[] args) throw
2016-04-17 08:53:42 1276
原创 从头认识多线程-1.9 迫使线程停止的方法-return法
这一章节我们来讨论一下另一种停止线程的方法-return1.在主线程上面return,是把所有在运行的线程都停掉package com.ray.deepintothread.ch01.topic_9;public class StopByReturn { public static void main(String[] args) throws InterruptedException {
2016-04-17 08:31:56 2518 1
原创 从头认识多线程-1.8 迫使线程停止的方法-暴力Stop方法
这一章节我们来讨论一下暴力Stop方法。1.使用例子package com.ray.deepintothread.ch01.topic_8;public class StopByStopMethod { @SuppressWarnings("deprecation") public static void main(String[] args) throws InterruptedExce
2016-04-16 22:58:10 1833
原创 从头认识多线程-1.7 迫使线程停止的方法-异常法的扩展(Sleep的Exception)
这一章节我们来讨论一下异常法的扩展Sleep的Exception。1.使用情景有些时候我们使用多线程执行一项任务,但是我们会对这个任务的进行时间进行评估,任务某个值之后就是超时,这个时候必须终止任务,并返回信息给客户2.代码清单package com.ray.deepintothread.ch01.topic_7;public class StopBySleep { public stati
2016-04-16 22:40:38 1913 1
原创 从头认识多线程-1.6 迫使线程停止的方法-异常法
这一章节我们来讨论一下迫使线程停止的方法-异常法。1.伪停止法在介绍异常法前,我们来看一下一个伪停止的例子。一般使用多线程,都是在执行一些循环任务,那么,我只要停止了for,就停止了线程了,这是错误的。例子package com.ray.deepintothread.ch01.topic_6;public class FakeInterruptSample { public static v
2016-04-15 15:16:25 1842
原创 从头认识多线程-1.5 interrupt()和isInterrupt()
这一章节我们来讨论一下线程的停止,由于线程的停止方法stop,suppend,resume已经弃用,因此不推荐,现在只能够使用interrupt,但是这个方法只是标记一下这个线程已经停止,没有实质性的停下来的。1.代码清单package com.ray.deepintothread.ch01.topic_5;public class InterruptSample { public stat
2016-04-15 14:36:56 2466 1
原创 从头认识多线程-1.4 isAlive()和Sleep()
这一章节我们来讨论一下多线程里面的isAlive()这个函数。1.含义isAlive()指线程的使用状态,是否起来了2.代码例子(1)在不同的线程运行同一个方法package com.ray.deepintothread.ch01.topic_4;public class IsAliveSample_1 { public static void main(String[] args) {
2016-04-12 08:43:16 3621 2
原创 从头认识多线程-1.3 currentThread()
这一章节我们来讨论一下currentThread()。我们下面通过一段代码来解释几个问题:package com.ray.deepintothread.ch01.topic_3;public class CurrentThreadSample { public static void main(String[] args) { ThreadFive threadFive = new Th
2016-04-07 22:45:56 2062 1
原创 从头认识多线程-1.2 共享变量与线程安全简介
这一章节我们来简单讨论一下共享变量与线程安全简介。1.共享变量没有共享的代码:package com.ray.deepintothread.ch01.topic_2;public class NotShareTheVariables { public static void main(String[] args) { for (int i = 0; i < 3; i++) { Ru
2016-04-07 10:38:36 1881 1
原创 从头认识多线程-1.1 多线程的创建
这一章节我们来简单回顾一下多线程的创建,其实这个在之前的从头认识java的系列文章里面已经聊到过这个话题,在这里重新梳理一遍,当成这个系列的开篇。1.继承ThreadThread的构造器Thread()Allocates a new Thread object.Thread(Runnable target)Allocates a new Thread object.Thread(Runnable
2016-04-07 09:53:49 1728 2
Mastering Python Design Patterns 精通python设计模式
2015-09-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人