线程通信
Posted wsjun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程通信相关的知识,希望对你有一定的参考价值。
主要涉及java.lang.Object 中三个方法(只能在synchronized方法或者synchronized代码块中使用,否则会报java.lang.illegalMonitorStateException异常)
- wait():释放锁,让当前侠线程挂起,等候再次对资源的访问,
- notufy():唤醒优先级最高的线程,
- notifyAll():唤醒正在排队等待的资源的所有线程
例如 让两个线程交替打印1-100
import static java.lang.Thread.sleep; /** * @author: wsj * @date: 2018/10/13 * @time: 17:27 */ class PrintNum implements Runnable{ int num = 1; @Override public void run() { while(true){ synchronized (this){ notify(); if(num <= 10) { try { sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + ":" + num); num++; try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } } public class miantest { public static void main(String[] args) { PrintNum p = new PrintNum(); Thread t1 = new Thread(p); Thread t2 = new Thread(p); t1.setName("ji"); t2.setName("yi"); t1.start(); t2.start(); } }
以上是关于线程通信的主要内容,如果未能解决你的问题,请参考以下文章
Motan在服务provider端用于处理request的线程池
newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段