
多线程
冰河家园
技术改变生活
展开
-
常见任务调度框架
任务调度原创 2022-08-09 15:52:20 · 4530 阅读 · 0 评论 -
生产者消费者代码
package test47;/*** * 多线程:生产者消费者问题代码 * * 分析: 资源类:Student * 设置学生数据:SetThread(生产者) * 获取学生数据:GetThread(消费者) * 测试类:StudentDemo * * 问题:发现数据每次都是:null---0 * 原因:在每个线程中都创建了新的资源,而我们要求的时候设置和获取线程的资源原创 2017-04-16 22:19:52 · 477 阅读 · 0 评论 -
生产者和消费者之等待唤醒机制
package test48;/*** * 多线程:生产者消费者问题代码 * * 分析: 资源类:Student * 设置学生数据:SetThread(生产者) * 获取学生数据:GetThread(消费者) * 测试类:StudentDemo * * 问题:发现数据每次都是:null---0 * 原因:在每个线程中都创建了新的资源,而我们要求的时候设置和获取线程的资源原创 2017-04-17 16:10:39 · 345 阅读 · 0 评论 -
线程池
程序启动一个新线程成本是比较高的,因为它涉及到要与操作系统进行交互。而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池。线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,就等待下一个对象来使用。在JDK5之前,我们必须手动实现自己的线程池,从JDK5开始,Java内置支持线程池。JDK5新增了一个Executors工厂类来原创 2017-04-21 16:08:09 · 275 阅读 · 0 评论 -
多线程(匿名内部类的方式实现多线程程序)
package test53;/*** * 匿名内部类的格式: new 类名或者接口名(){ 重写方法; } 本质:是该类或者接口的子类对象。 * * @author samsung * */public class test53 { public static void main(String[] args) { // new Thread() {原创 2017-05-18 19:26:46 · 351 阅读 · 0 评论 -
多线程(定时器的概述和使用)
package test53;import java.util.Timer;import java.util.TimerTask;/*** * 多线程(定时器的概述和使用) * 定时器是一个应用十分广泛的线程工具,可以调度多个定时任务以后台线程的方式执行, * 在java中,可以通过Timer和TimerTask类来实现定义调度的功能 * * Timer * public Time原创 2017-05-18 20:52:12 · 419 阅读 · 0 评论 -
多线程(定时删除指定的带内容目录)
package test55;import java.io.File;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java.util.TimerTask;import javax.swing.text原创 2017-05-18 22:15:06 · 795 阅读 · 0 评论 -
多线程面试题
1:多线程有几种实现方案,分别是哪几种? 两种。继承Thread类实现Runnable接口扩展一种:实现Callable接口。这个得和线程池结合。2:同步有几种方式,分别是什么? 两种。同步代码块同步方法3:启动一个线程是run()还是start()?它们的区别? start();run():封装了被线程执行的代码,直接调用仅仅是普通方法的调用start():原创 2017-05-19 10:31:38 · 270 阅读 · 0 评论 -
java-同步锁synchronized
/** * 多线程并发安全问题 * 当多个线程并发访问同一资源时,由于线程切换不确定导致的代码执行顺序混乱从而出现很多问题。 * *synchronized关键字 *java中的同步锁 *多个线程并发读写同一个临界资源时会发生“线程并发安全” *常见的临界资源: *多线程共享实例变量、多线程共享静态公共变量 *若想解决线程安全问题,需要将异步的操作变为同步操作 *异步操作:多线程原创 2017-08-10 14:22:06 · 319 阅读 · 0 评论 -
死锁问题概述
package test46;/*** * 同步的弊端: A:效率低 B:容易产生死锁 * 死锁:两个或多个线程在争夺资源的过程中,发生的一种相互等待的现象。 * * @author samsung * */public class DiedLockTest { public static void main(String[] args) { Die原创 2017-04-05 10:04:38 · 257 阅读 · 0 评论 -
线程组
JAVA中使用ThreadGroup来表示线程组,它可以对一批线程进行分类 管理,java允许程序直接对线程组进行控制。默认情况下,所有的线程都属于主线程组。 public final ThreadGroup getThreadGroup()我们也可以给线程设置分组。 Thread(ThreadGroup group,Runnable target,String name)package原创 2017-04-17 21:13:48 · 352 阅读 · 0 评论 -
Lock的用法
package test45;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/*** * * @author samsung * *虽然我们理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加了锁,在哪里解了锁 *为了更清晰的表达如何加锁和释原创 2017-04-04 19:41:24 · 627 阅读 · 0 评论 -
线程调度及获取和设置线程优先级
package test39;/*** * 线程调度 CPU在某一个时刻只能执行一条指令,线程只有得到CPU时间片,也就是使用权,才可以执行指令,那么java是如何对线程进行调用的 * 线程有两种调度模型: 分时调度模型 所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间片 抢占式调度模型 * 优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个,优先级高的线原创 2017-03-30 22:01:41 · 1041 阅读 · 0 评论 -
线程的中断
package test41;import java.util.Date;/*** * public final void stop():让线程停止,过时了,但是还是可以使用的,不过太过于暴力,存在安全隐患 * public void interrupt():中断进程,把线程的状态终止,并抛出一个InterruptedException * @author samsung * */pu原创 2017-03-31 18:01:09 · 237 阅读 · 0 评论 -
线程生命周期图解
新建:创建线程对象 就绪:有执行资格,没有执行权 运行:有执行资格,有执行权 阻塞:由于一些操作让线程处于了该状态,没有执行资格,没有执行权,而另一些操作却可以把它给激活,激活后处于就绪状态。 死亡:线程对象变成垃圾,等待被回收。原创 2017-03-31 19:15:14 · 447 阅读 · 0 评论 -
多线程方式2
package test42;/*** * 方式2:实现Runnable接口 * 步骤: * A:自定义类MyRunnable实现Runnable接口 * B:重写run()方法 * C:创建MyRunnable类的对象 * D:创建Thread类的对象,并把C步骤的对象作为构造参数传递 * @auth原创 2017-03-31 20:30:00 · 193 阅读 · 0 评论 -
多线程两种方式的对比
继承Thread类创建myThread类继承Thread在myThread类中重写run()方法创建myThread类的对象调用start(),启动线程注意:为什么要重写run()方法?run()里面封装的是被线程执行的代码。run()和start()方法的区别?run()直接调用仅仅是普通方法,start()先启动线程,再由JVM调用run()方法实现Runnable接口自定义类myR原创 2017-03-31 22:01:28 · 354 阅读 · 0 评论 -
实现Runnable接口的方式卖电影票(同步代码)
package test44;/*** * * 实现Runnable接口的方式卖电影票 * * 通过加入延迟后,就产生了问题:相同票卖多次(cpu的一次操作必须是原子性的),出现负数票(随机性和延迟导致的) * * @author samsung * * 如何解决线程安全问题? * * 要想解决问题,就要知道那些原因会导致出问题:(而且这些原原创 2017-04-01 19:02:49 · 1467 阅读 · 0 评论 -
同步代码块,同步代码方法,锁
1、同步代码块 synchronized(锁对象){ 需要被锁的代码//线程只有拿到了锁对象,才能执行这里的代码!!!换言之,这里的代码如果执行了,说明该线程拿到了锁对象,其他线程不能拿到该锁对象 } 注意 多个线程必须使用同一个锁对象,要不然锁无效2、同步方法与同步代码块对应的,java的多线程的安全支持还提供了同步方法,同步方法就是原创 2017-04-03 09:45:00 · 1078 阅读 · 0 评论 -
多线程(线程的状态转换图及常见执行情况)
线程的状态转换图原创 2017-04-17 19:33:01 · 423 阅读 · 0 评论 -
多线程的启动方式
package test37;/*** * * @author samsung * * 该类要重写run()方法 不是类中的所有代码都需要被线程执行的 * 而这个时候,为了区分哪些代码能够被线程执行,java提供了Thread类中的tun()用来包含哪些被线程执行的代码。 * * 一般来说,被线程执行的代码肯定是比较耗时的,用循环改进原创 2017-03-29 09:41:21 · 517 阅读 · 0 评论