当前位置: 首页 > wzjs >正文

做中英文网站要注意什么企业文化设计

做中英文网站要注意什么,企业文化设计,vi设计收费标准,做网站怎么做起来的hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:线程之间有哪些通信方式? 在 Java 多线程编程中,线程间通信(Inter-Thread Communica…

hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶

面试官:线程之间有哪些通信方式?

在 Java 多线程编程中,线程间通信(Inter-Thread Communication)的核心目的是协调不同线程的执行顺序或共享数据。以下是线程间通信的常见方式及其实现原理和应用场景:


1. 共享内存 + 同步机制

原理:线程通过共享变量(如对象、集合)交换数据,通过锁(synchronizedLock)或原子类(AtomicInteger 等)保证线程安全。
示例

// 共享变量
private int sharedValue = 0;
private final Object lock = new Object();// 线程 A 写入
synchronized (lock) {sharedValue = 42;lock.notifyAll(); // 通知等待的线程
}// 线程 B 读取
synchronized (lock) {while (sharedValue == 0) {lock.wait(); // 等待通知}System.out.println(sharedValue);
}

适用场景:简单的数据共享,需手动处理同步和竞态条件。


2. 阻塞队列(BlockingQueue)

原理:线程通过线程安全的队列传递数据,生产者写入队列,消费者从队列读取。队列满或空时自动阻塞。
示例

BlockingQueue<String> queue = new LinkedBlockingQueue<>(10);// 生产者线程
queue.put("data"); // 队列满时阻塞// 消费者线程
String data = queue.take(); // 队列空时阻塞

适用场景:生产者-消费者模型,解耦生产与消费逻辑。


3. wait() / notify() / notifyAll()

原理:基于对象监视器(Monitor)的等待-通知机制,需在 synchronized 块中使用。
示例

public class TaskCoordinator {private boolean isReady = false;public void waitForReady() throws InterruptedException {synchronized (this) {while (!isReady) {this.wait(); // 释放锁并等待}}}public void setReady() {synchronized (this) {isReady = true;this.notifyAll(); // 唤醒所有等待线程}}
}

适用场景:线程间的条件协作(如任务启动前的等待)。


4. 同步工具类(Semaphore、CountDownLatch 等)

原理:通过计数器或状态控制线程的执行流程。
常用类

  • CountDownLatch:等待多个线程完成初始化。
    CountDownLatch latch = new CountDownLatch(3);// 工作线程
    latch.countDown(); // 计数器减 1// 主线程
    latch.await(); // 等待计数器归零
    
  • CyclicBarrier:多线程相互等待至屏障点。
    CyclicBarrier barrier = new CyclicBarrier(3);// 每个线程执行到屏障点后等待
    barrier.await();
    
  • Semaphore:控制并发线程数量。
    Semaphore semaphore = new Semaphore(5);semaphore.acquire(); // 获取许可(无可用许可时阻塞)
    semaphore.release(); // 释放许可
    

适用场景:复杂线程协作(如分批任务、资源池管理)。


5. 管道(PipedInputStream / PipedOutputStream)

原理:通过管道流直接传递字节数据,需成对使用。
示例

PipedInputStream pis = new PipedInputStream();
PipedOutputStream pos = new PipedOutputStream();
pis.connect(pos); // 连接输入输出流// 生产者线程写入数据
pos.write("data".getBytes());// 消费者线程读取数据
int data = pis.read();

适用场景:线程间直接传输字节数据(较少使用,性能较低)。


6. Future 和 Callable

原理:通过 Future 获取另一个线程的异步执行结果。
示例

ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Integer> future = executor.submit(() -> {Thread.sleep(1000);return 42;
});// 阻塞等待结果
int result = future.get();

适用场景:异步任务执行与结果获取。


7. 事件驱动(如 EventBus)

原理:基于发布-订阅模式,线程通过事件总线传递消息。
示例(使用 Guava EventBus)

EventBus eventBus = new EventBus();// 订阅者
class Subscriber {@Subscribepublic void handleEvent(String event) {System.out.println("Received: " + event);}
}eventBus.register(new Subscriber());// 发布者线程
eventBus.post("Hello");

适用场景:松耦合的事件通知(如 GUI 事件处理)。


8. 回调(Callback)

原理:线程 A 调用线程 B 的方法时传入回调函数,线程 B 完成任务后调用回调函数通知线程 A。
示例

interface Callback {void onComplete(String result);
}class Worker {void doWork(Callback callback) {new Thread(() -> {String result = "Done";callback.onComplete(result);}).start();}
}// 调用
new Worker().doWork(result -> System.out.println(result));

适用场景:异步任务完成后的通知。


对比与选型建议

通信方式优点缺点适用场景
共享内存 + 同步简单直接需手动处理同步,易出错简单数据共享
阻塞队列线程安全,解耦生产消费队列容量需合理设置生产者-消费者模型
wait/notify灵活的条件控制需搭配 synchronized 使用线程条件协作
同步工具类简化复杂协作逻辑需理解不同工具的特性多线程分阶段协作
Future/Callable支持异步结果获取仅适用于单次任务异步任务执行
事件驱动松耦合,易扩展依赖第三方库(如 EventBus)事件通知场景
回调灵活定制逻辑回调嵌套可能导致“回调地狱”异步任务完成通知

注意事项

  1. 线程安全:共享变量必须通过锁或原子类确保可见性和原子性。
  2. 死锁预防:避免嵌套锁和循环等待资源。
  3. 性能权衡:高并发场景优先选择无锁或细粒度锁(如 ConcurrentHashMap)。
  4. 资源释放:确保 wait() 后能正常唤醒,避免线程永久阻塞。
    在这里插入图片描述
http://www.dtcms.com/wzjs/55374.html

相关文章:

  • 鄂州网站推广优化技巧成都百度seo推广
  • 做眼镜网站草图有什么原则网络销售哪个平台最好
  • 珠海市人民政府门户网站网站信息
  • 网站建设合同解除函电商seo是什么意思啊
  • 杭州的网站开发网络营销个人总结
  • 石家庄做网站wsjz深圳seo关键词优化
  • 上海室内软装设计公司排名seo怎么读
  • win7 iis搭建网站教程正规网站建设公司
  • 为什么做电商网站网站备案是什么意思
  • 免费发布黄页广告网站seo内容优化是什么
  • 兰州网站优化推广百度信息流投放技巧
  • 龙岗网站设计效果2022年可以打开的网址
  • 阿里巴巴国内网站怎么做91
  • 做网站纸张大小百度seo是啥意思
  • 无锡专业做网站的公司哪家好排行榜哪个网站最好
  • wordpress 宅男猫网站广告咨询
  • 中国建设银行青浦支行网站经典软文案例100例简短
  • 锐狐 网站 后台网站收录怎么弄
  • 做矿业的郑州公司网站福州seo视频
  • 用html做网站网站制作哪家公司好
  • 想给公司做网站中企动力靠谱吗重庆高端网站seo
  • 网站接入商排名大连今日新闻头条
  • 企业网站创建步百度软文推广怎样收费
  • 泰州网站建设解决方案合肥seo搜索优化
  • 门户网站建设解决方案seo关键字排名优化
  • 泰安网站设计网络营销主要有哪些特点
  • 国内网站免备案模板网站哪个好
  • 免费建站建站云优化
  • 后台管理网站名网络软文发布
  • 商务网站建设包含了qq推广工具