
多线程
文章平均质量分 72
哈哈__哈哈
一直在学习
展开
-
多线程 fork join 实现累加
ForkJoin框架,可做同步和异步处理,可有返回值和无返回值调用。invokeAll为同步调用;execute为异步调用;RecursiveAction,用于没有返回结果的任务;RecursiveTask,用于有返回值的任务;这里用同步调用实现累加package com.cz.mhm.forkjoin.sum;import java.lang.reflect.Arr...原创 2019-05-04 15:44:17 · 315 阅读 · 0 评论 -
通过代码,了解ThreadLocal
在看此代码时,先看http://www.iteye.com/topic/103804 如果ThreadLocal.set()进去的东西本来就是多个线程共享的同一个对象,那么多个线程的ThreadLocal.get()取得的还是这个共享对象本身,还是有并发访问问题。 package test1;import java.util.Random;/**...原创 2014-07-29 14:06:38 · 107 阅读 · 0 评论 -
子线程先执行10次,主线程执行5次,子线程再执行10次,主线程再执行5次,如此反复3次...
package com.mhm.test1;/** * 子线程跑10次,主线程跑5次,然后子线程再跑10次,主线程再跑5次,往返3次 * @author Mahone * */public class Test2 { public static void main(String[] args) { Test2 t2 = new Test2();...原创 2014-07-28 22:21:19 · 462 阅读 · 0 评论 -
多线程之:生产者消费者
一直纠结与生产和消费完后为什么要sleep(),现在终于搞明白了,把代码贴出[code="java"]package com.mhm.test;public class ProducerConsumer { public static void main(String[] args) { SyncStack ss = new SyncStack(); Produ...原创 2011-01-07 14:55:49 · 154 阅读 · 0 评论 -
synchronized 在多线程中的一些 理论
package com.mhm.test;public class Test8 extends Thread { public String methodName; public static void method(String s) { System.out.println(s); while (true) ; } public synchr...原创 2011-04-22 10:58:48 · 94 阅读 · 0 评论 -
为什么要在多线程中进行数据同步
package com.mhm.test;public class Test7 extends Thread { public static int n = 0; public void run() { int m = n; yield(); m++; n = m; } public static void main(String[] arg...原创 2011-04-21 17:28:37 · 226 阅读 · 0 评论 -
多线程理论知识
Java中建立线程有两种方法,一种是继承Thread类,另一种是实现Runnable接口,并通过Thread和实现Runnable的类来建立线程,其实这两种方法从本质上说是一种方法,即都是通过Thread类来建立线程,并运行run方法的。 但它们的大区别是通过继承Thread类来建立线程,虽然在实现起来更容易,但由于Java不支持多继承,因此,这个线程类如果继承了Thre...原创 2011-04-21 11:58:41 · 149 阅读 · 0 评论 -
线程模仿 ATM取钱
自己写着学习用的[code="java"]public class TestThreadATM implements Runnable{ ATM atm = new ATM(); public static void main(String[] args) { TestThreadATM tt = new TestThreadATM(); Thread laogo...原创 2011-01-07 11:12:21 · 150 阅读 · 0 评论 -
线程的同步
线程的同步:[code="java"]public class TestSync implements Runnable{ Timer timer = new Timer(); public static void main(String[] args) { TestSync test = new TestSync(); Thread t1 = new Thread(tes...原创 2011-01-05 17:26:09 · 86 阅读 · 0 评论 -
简单多线程卖票代码
public class Thread2 { public static void main(String[] args) { ShareData d = new ShareData();//两个窗口卖票 new Thread(d).start(); new Thread(d).start(); }}class ShareData implem...原创 2014-07-29 15:45:37 · 162 阅读 · 0 评论 -
4线程,2个对i加,2个对i减
package test1;/** * 设计4个线程,其中2个线程,每次对i加1,另外两个线程,每次对i减一 * * @author Administrator * */public class Thread2 { public static void main(String[] args) { ShareData d = new ShareDat...原创 2014-07-29 16:23:03 · 319 阅读 · 0 评论 -
通过代码,解释ExecutorService基本用法
package test1;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * 通过以下代码可看出,线程池0-2用完后,释放,再放入3-5,如此循环,直到走完全部循环 * @author Administrator * */...原创 2014-07-29 17:49:26 · 179 阅读 · 0 评论 -
多线程,wait/notifyall 模拟枪的压弹和射击
面试题:采用多线程技术,例如wait/notify,设计实现一个符合生产者和消费者问题的程序,对某一个对象(枪膛)进行操作,其最大容量是20颗子弹,生产者线程是一个压入线程,它不断向枪膛中压入子弹,消费者线程是一个射出线程,它不断从枪膛中射出子弹。package com.cz.mhm.gun;public abstract class AbstractGun { /** ...原创 2019-05-04 13:04:06 · 658 阅读 · 0 评论 -
编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC...
package test1;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 编写一个程序,开启3个线程, * 这3个线程的ID分...原创 2014-08-07 13:10:46 · 242 阅读 · 0 评论 -
java 多线程 笔试题
1、4线程,2个对i加,2个对i减 2、实现孙线程跑5次,子线程跑10次,主线程跑15次。代码:http://hongmin118.iteye.com/admin/blogs/2097489 3、编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推代码:ht...原创 2014-08-07 12:30:44 · 257 阅读 · 0 评论 -
基于ArrayBlockingQueue的生产者和消费者
学习写的测试,可能有BUG。有了ArrayBlockingQueye,写生产者和消费者方便多了。之前的一篇关于生产者和消费者的,一堆代码http://hongmin118.iteye.com/blog/865222package com.mhm.test1;import java.util.concurrent.ArrayBlockingQueue;/** * ...原创 2014-08-06 23:02:03 · 176 阅读 · 0 评论 -
每隔一秒打印一次日志,共16秒打印完,加4个线程修改程序,使之4秒打印完
原来的程序:package test1;public class ThreadTest2 { public static void main(String[] args) { try { for (int i = 0; i < 16; i++) { // 此行代码不能动 final String log = "" + (i + 1);// 此行代码不...原创 2014-08-06 17:20:47 · 211 阅读 · 0 评论 -
通过semaphore信号灯,开启多个线程,但只并发3个线程
package com.mhm.test1;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;/** * semaphore 信号灯 * 20个线程,开启3个信号灯...原创 2014-08-04 22:07:37 · 135 阅读 · 0 评论 -
用锁实现缓存机制
package test1;import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/** * 通过锁,实现缓存...原创 2014-08-01 14:11:26 · 132 阅读 · 0 评论 -
用Lock和Condition,实现主线程执行5次,子线程再执行10次,孙线程执行15次,如此反复5次...
package test1;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 用Lock和Condition,实现主线程执行5次,子线程再...原创 2014-08-01 13:50:10 · 198 阅读 · 0 评论 -
线程的状态
线程的状态:原创 2011-01-05 11:45:19 · 93 阅读 · 0 评论 -
多线程的几个小程序,诠释多线程的基本概念
通过实现Runnable来实现多线程:[code="java"]public class TestThread1{ public static void main(String[] args){ Runner1 r = new Runner1(); Thread t = new Thread(r); t.start();//注意:t.run(); 是指方法调用,先执行...原创 2011-01-05 11:15:02 · 147 阅读 · 0 评论 -
多线程:wait/notifyAll,实现生产者消费者
注意,一般使用notifyAll,如果使用notify,则只会通知一个wait的线程,notifyAll可防止通知信号丢失wait会释放锁,notify/notifyAll不会释放锁,需要等syn代码块执行完才会释放锁package com.chapter1.ch1.wait;public interface AbstractStorage { void consume...原创 2018-09-26 14:46:55 · 240 阅读 · 0 评论 -
高性能无阻塞无界队列 ConcurentLinkedQueue
public static void main(String[] args) { ConcurrentLinkedQueue clq = new ConcurrentLinkedQueue<>(); clq.offer("a"); clq.offer("b"); clq.offer("c"); clq.offer("d"); clq.add("e"); // 注意:在Con原创 2017-10-31 11:15:16 · 477 阅读 · 0 评论 -
DelayQueue,网吧记时
Wangmin:package com.mhm.delayQueue;import java.util.concurrent.Delayed;import java.util.concurrent.TimeUnit;public class Wangmin implements Delayed { private int id; private String name;原创 2017-11-02 19:27:36 · 335 阅读 · 0 评论 -
CountDownLatch的使用方法
使用场景:系统启动时,需要校验网络、数据库、中间件等各种依赖环境,此时,可用CountDownLatch来做处理BaseCheck:package com.mhm.countdownLatch3;import java.util.concurrent.CountDownLatch;public abstract class BaseCheck implements原创 2017-11-02 17:58:16 · 383 阅读 · 0 评论 -
多线程master-worker设计
Task:package com.mhm.masterworker;/** * 累加一共有多少钱 * @author Administrator * */public class Task { private int id; private String name; private int price; public int getId() { retur原创 2017-11-09 14:04:44 · 280 阅读 · 0 评论 -
synchronized 在多线程中的一些 理论
package com.mhm.test;public class Test8 extends Thread { public String methodName; public static void method(String s) { System.out.println(s); while (true) ; } public synchr原创 2017-10-17 17:55:05 · 134 阅读 · 0 评论 -
为什么要在多线程中进行数据同步
package com.mhm.test;public class Test7 extends Thread { public static int n = 0; public void run() { int m = n; yield(); m++; n = m; } public static void main(String[] arg原创 2017-10-17 17:54:55 · 335 阅读 · 0 评论 -
多线程理论知识
Java中建立线程有两种方法,一种是继承Thread类,另一种是实现Runnable接口,并通过Thread和实现Runnable的类来建立线程,其实这两种方法从本质上说是一种方法,即都是通过Thread类来建立线程,并运行run方法的。 但它们的大区别是通过继承Thread类来建立线程,虽然在实现起来更容易,但由于Java不支持多继承,因此,这个线程类如果继承了Thread,就原创 2017-10-17 17:54:47 · 181 阅读 · 0 评论 -
多线程之:生产者消费者
一直纠结与生产和消费完后为什么要sleep(),现在终于搞明白了,把代码贴出package com.mhm.test;public class ProducerConsumer { public static void main(String[] args) { SyncStack ss = new SyncStack(); Producer p = new Pro原创 2017-10-17 17:49:37 · 221 阅读 · 0 评论 -
安全单例模式
package com.mhm.thread;public class Singleton { private static Singleton single = new Singleton(); public static Singleton getInstance() { return Singleton.single; }}原创 2017-10-30 20:39:13 · 227 阅读 · 0 评论 -
java 多线程 笔试题
1、4线程,2个对i加,2个对i减 2、实现孙线程跑5次,子线程跑10次,主线程跑15次。代码:http://hongmin118.iteye.com/admin/blogs/2097489 3、编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推代码:http...原创 2017-10-17 18:20:23 · 521 阅读 · 0 评论 -
编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC
package test1;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 编写一个程序,开启3个线程, * 这3个线程的ID分别为A、B、C, ...原创 2017-10-17 18:20:28 · 8815 阅读 · 0 评论 -
子线程先执行10次,主线程执行5次,子线程再执行10次,主线程再执行5次,如此反复3次
package com.mhm.test1;/** * 子线程跑10次,主线程跑5次,然后子线程再跑10次,主线程再跑5次,往返3次 * @author Mahone * */public class Test2 { public static void main(String[] args) { Test2 t2 = new Test2(); t2.init();...原创 2017-10-17 18:19:11 · 1169 阅读 · 1 评论 -
通过代码,解释ExecutorService基本用法
package test1;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * 通过以下代码可看出,线程池0-2用完后,释放,再放入3-5,如此循环,直到走完全部循环 * @author Administrator * */public cla...原创 2017-10-17 18:19:41 · 263 阅读 · 0 评论 -
4线程,2个对i加,2个对i减
package test1;/** * 设计4个线程,其中2个线程,每次对i加1,另外两个线程,每次对i减一 * * @author Administrator * */public class Thread2 { public static void main(String[] args) { ShareData d = new ShareData(); for ...原创 2017-10-17 18:19:32 · 738 阅读 · 0 评论 -
用Lock和Condition,实现主线程执行5次,子线程再执行10次,孙线程执行15次,如此反复5次
package test1;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 用Lock和Condition,实现主线程执行5次,子线程再执行10次,孙线程...原创 2017-10-17 18:19:47 · 335 阅读 · 0 评论 -
用锁实现缓存机制
package test1;import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/** * 通过锁,实现缓存机制 * 伪代码...原创 2017-10-17 18:19:56 · 192 阅读 · 0 评论 -
通过semaphore信号灯,开启多个线程,但只并发3个线程
package com.mhm.test1;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;/** * semaphore 信号灯 * 20个线程,开启3个信号灯,一个线程拿走一个灯...原创 2017-10-17 18:20:02 · 222 阅读 · 0 评论