多线程
文章平均质量分 62
weixin_51554985
这个作者很懒,什么都没留下…
展开
-
2023.03.15关于线程池的四个例子去演示synchronized和Thread和Runnable
OverrideSystem.out.println(username+"正在使用"+name+"进行秒杀活动");try {if(num>0){System.out.println(username+"正在使用"+name+"进行秒杀,成功了"+num--);}else {System.out.println(username+"正在使用"+name+"进行秒杀,失败了");i < 20;i++) {tpe.submit(new MyTask("客户"+i));原创 2023-03-17 20:47:43 · 234 阅读 · 0 评论 -
2023.03.15演示死锁的例子
当t1作用到obj1的时候,t2作用到obj2,两个线程互不打扰,当t1作用到obj2的时候发现obj2有t2线程正在跑,那就等t2先跑完,t2此时也到作用到obj1的时候,此时发现t1也在作用obj1,t2也在等t1作用完obj1,这时候就造成了死锁。然而,当一个线程访问object的一个加锁代码块时,另一个线程仍可以访问该object中的非加锁代码块。System.out.println("1秒钟之后,"+Thread.currentThread().getName()+"锁住了obj2");原创 2023-03-17 20:12:17 · 31 阅读 · 0 评论 -
2023.03.15线程的sleep(),yield(),join(),等各种睡眠方法。
///////////////////////////sleep方法。System.out.println("-----中断------");通过demo06的演示得出结论,代码线程不安全!如何解决 ,采用线程同步,加锁,让改变量不能共享!如果对象中的方法都是同步方法,那么某一时刻只能执行一个方法 采用线程同步就能解决上述问题!线程同步: 某一个时刻,允许一个线程来访问共享资源,线程同步是对 对象进行加锁。t1会先运行完,t2再运行,有了先后数据,并且 num=0;原创 2023-03-17 19:53:38 · 97 阅读 · 0 评论 -
2023.03.15线程的相关笔记
当线程可以调用另一个线程的join方法,调用后当前线程会被阻塞不再执行,直到被调用的线程执行完毕,当前线程才会被执行。当线程可以调用另一个线程的join方法,调用后当前线程会被阻塞不再执行,直到被调用的线程执行完毕,当前线程才会被执行。如果对象中的方法都是同步方法,那么某一时刻只能执行一个方法 采用线程同步就能解决上述问题!如果对象中的方法都是同步方法,那么某一时刻只能执行一个方法 采用线程同步就能解决上述问题!线程同步: 某一个时刻,允许一个线程来访问共享资源,线程同步是对 对象进行加锁。原创 2023-03-17 18:36:26 · 21 阅读 · 0 评论 -
2023.03.14多线程中Future异步计算结果的is相关用法
System.out.println("判断第二次任务是否取消"+cancelled2);System.out.println("判断第一次任务是否取消"+cancelled);System.out.println("任务执行结果"+integervalue);System.out.println("第二次判断任务是否正常完成"+done2);System.out.println("第一次判断任务是否正常完成"+done);System.out.println(name+"开始准备了");原创 2023-03-14 21:15:03 · 23 阅读 · 0 评论 -
2023.03.14java内置的线程池 -》 ScheduledExecutorService 具备延迟运行的能力!的使用
方法三:不去自定义线程数量,也就是单线程,创建对象的时候语句有所不同,(Scheduled怎么去定义单线程?System.out.println(name+"执行了任务"+id);System.out.println(name+"执行了任务"+id);System.out.println(name+"执行了任务"+id);return new Thread(r,"线程"+i++);方法二:定义了线程的数量,具有了延迟的能力,并且创建了线程工程,可以自定义线程;指定线程了线程数量,具有了延迟的能力。原创 2023-03-14 21:14:36 · 224 阅读 · 0 评论 -
2023.03.14Java中内置的线程池 ExecutorService
Override public Thread newThread(Runnable r) { return new Thread(r,"自定义线程"+i++);创建一个使用单个worker 线程的 Executor ,且线程池中的所有的线程都使用ThreadFactory来创建!线程池中所有的线程都使用 ThreadFactory来创建 ,这样的线程不需要手动启动,自动执行!创建一个可重用的固定线程数的线程池,所有的线程都由ThreadFactory来创建!创建一个默认的线程池对象,里面的线程可以重用!原创 2023-03-14 21:02:55 · 59 阅读 · 0 评论 -
2023.03.14多线程: 自己定义一个线程池,分为任务类,线程类,线程池,测试类。
@description: 这个是任务类,实现类Runnable 包含任务编号 id 每一个任务执行时间设计为0.2秒。System.out.println("线程"+name+"即将完成任务"+id);new MyWork("非核心线程"+num,tasks).start();System.out.println("线程"+name+"完成了任务"+id);System.out.println("任务"+r+"被丢弃了");System.out.println("任务"+r+"被缓存了");原创 2023-03-14 20:54:50 · 33 阅读 · 0 评论