冰河家园的博客

追求技术

java-同步锁synchronized

/** * 多线程并发安全问题 * 当多个线程并发访问同一资源时,由于线程切换不确定导致的代码执行顺序混乱从而出现很多问题。 * *synchronized关键字 *java中的同步锁 *多个线程并发读写同一个临界资源时会发生“线程并发安全” *常见的临界资源: *多线程共享实例变...

2017-08-10 14:22:06

阅读数 191

评论数 0

多线程面试题

1:多线程有几种实现方案,分别是哪几种? 两种。继承Thread类 实现Runnable接口扩展一种:实现Callable接口。这个得和线程池结合。 2:同步有几种方式,分别是什么? 两种。同步代码块 同步方法 3:启动一个线程是run()还是start()?它们的区别? ...

2017-05-19 10:31:38

阅读数 174

评论数 0

多线程(定时删除指定的带内容目录)

package test55;import java.io.File; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Timer...

2017-05-18 22:15:06

阅读数 226

评论数 0

多线程(定时器的概述和使用)

package test53;import java.util.Timer; import java.util.TimerTask;/*** * 多线程(定时器的概述和使用) * 定时器是一个应用十分广泛的线程工具,可以调度多个定时任务以后台线程的方式执行, * 在java中,可以通过Tim...

2017-05-18 20:52:12

阅读数 185

评论数 0

多线程(匿名内部类的方式实现多线程程序)

package test53;/*** * 匿名内部类的格式: new 类名或者接口名(){ 重写方法; } 本质:是该类或者接口的子类对象。 * * @author samsung * */ public class test53 { public static void m...

2017-05-18 19:26:46

阅读数 185

评论数 0

线程池

程序启动一个新线程成本是比较高的,因为它涉及到要与操作系统进行交互。而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池。线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,就等待下一个对象来使用。 在JDK5之前,我们必须手动...

2017-04-21 16:08:09

阅读数 170

评论数 0

线程组

JAVA中使用ThreadGroup来表示线程组,它可以对一批线程进行分类 管理,java允许程序直接对线程组进行控制。默认情况下,所有的线程都属于主线程组。 public final ThreadGroup getThreadGroup() 我们也可以给线程设置分组。 Thread(Thr...

2017-04-17 21:13:48

阅读数 258

评论数 0

多线程(线程的状态转换图及常见执行情况)

线程的状态转换图

2017-04-17 19:33:01

阅读数 240

评论数 0

生产者和消费者之等待唤醒机制

package test48;/*** * 多线程:生产者消费者问题代码 * * 分析: 资源类:Student * 设置学生数据:SetThread(生产者) * 获取学生数据:GetThread(消费者) * 测试类:StudentDemo * * 问题:发现数据每次...

2017-04-17 16:10:39

阅读数 130

评论数 0

生产者消费者代码

package test47;/*** * 多线程:生产者消费者问题代码 * * 分析: 资源类:Student * 设置学生数据:SetThread(生产者) * 获取学生数据:GetThread(消费者) * 测试类:StudentDemo * * 问题:发现数据每次...

2017-04-16 22:19:52

阅读数 232

评论数 0

死锁问题概述

package test46;/*** * 同步的弊端: A:效率低 B:容易产生死锁 * 死锁:两个或多个线程在争夺资源的过程中,发生的一种相互等待的现象。 * * @author samsung * */ public class DiedLockTest { publ...

2017-04-05 10:04:38

阅读数 95

评论数 0

Lock的用法

package test45;import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;/*** * * @author samsung * *虽然我们理解同步代码块和同...

2017-04-04 19:41:24

阅读数 408

评论数 0

同步代码块,同步代码方法,锁

1、同步代码块 synchronized(锁对象){ 需要被锁的代码//线程只有拿到了锁对象,才能执行这里的代码!!!换言之,这里的代码如果执行了,说明该线程拿到了锁对象,其他线程不能拿到该锁对象 } 注意 多个线程必须使用同一个锁对象...

2017-04-03 09:45:00

阅读数 492

评论数 0

实现Runnable接口的方式卖电影票(同步代码)

package test44;/*** * * 实现Runnable接口的方式卖电影票 * * 通过加入延迟后,就产生了问题:相同票卖多次(cpu的一次操作必须是原子性的),出现负数票(随机性和延迟导致的) * * @author samsung * * 如何...

2017-04-01 19:02:49

阅读数 616

评论数 0

多线程两种方式的对比

继承Thread类创建myThread类继承Thread 在myThread类中重写run()方法 创建myThread类的对象 调用start(),启动线程 注意:为什么要重写run()方法?run()里面封装的是被线程执行的代码。 run()和start()方法的区别?run()直接调用仅仅是...

2017-03-31 22:01:28

阅读数 179

评论数 0

多线程方式2

package test42; /*** * 方式2:实现Runnable接口 * 步骤: * A:自定义类MyRunnable实现Runnable接口 * B:重写run()方法 * C:创建MyRunnable类的对象 ...

2017-03-31 20:30:00

阅读数 100

评论数 0

线程生命周期图解

新建:创建线程对象 就绪:有执行资格,没有执行权 运行:有执行资格,有执行权 阻塞:由于一些操作让线程处于了该状态,没有执行资格,没有执行权,而另一些操作却可以把它给激活,激活后处于就绪状态。 死亡:线程对象变成垃圾,等待被回收。

2017-03-31 19:15:14

阅读数 209

评论数 0

线程的中断

package test41;import java.util.Date; /*** * public final void stop():让线程停止,过时了,但是还是可以使用的,不过太过于暴力,存在安全隐患 * public void interrupt():中断进程,把线程的状态终止,并抛...

2017-03-31 18:01:09

阅读数 98

评论数 0

线程调度及获取和设置线程优先级

package test39;/*** * 线程调度 CPU在某一个时刻只能执行一条指令,线程只有得到CPU时间片,也就是使用权,才可以执行指令,那么java是如何对线程进行调用的 * 线程有两种调度模型: 分时调度模型 所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间片 抢占...

2017-03-30 22:01:41

阅读数 394

评论数 0

多线程的启动方式

package test37;/*** * * @author samsung * * 该类要重写run()方法 不是类中的所有代码都需要被线程执行的 * 而这个时候,为了区分哪些代码能够被线程执行,java提供了Thread类中的tun()用来包含哪些...

2017-03-29 09:41:21

阅读数 297

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭