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

网站开发客户的思路总结自己可以做电子商务网站

网站开发客户的思路总结,自己可以做电子商务网站,wordpress分享到微博才能看到,网站可视化后台hello啊,各位观众姥爷们!!!本baby今天又来报道了!哈哈哈哈哈嗝🐶 面试官:父子线程如何共享数据? 在Java中,父子线程共享数据可以通过以下几种方式实现,具体…

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

面试官:父子线程如何共享数据?

在Java中,父子线程共享数据可以通过以下几种方式实现,具体选择取决于应用场景和需求:


1. 通过共享对象成员变量

父线程和子线程共享同一个对象的成员变量,需使用同步机制确保线程安全。

class SharedData {private int value;public synchronized void setValue(int value) { this.value = value; }public synchronized int getValue() { return value; }
}public class Main {public static void main(String[] args) {SharedData data = new SharedData();data.setValue(100);Thread childThread = new Thread(() -> {System.out.println("子线程读取数据: " + data.getValue()); // 输出 100});childThread.start();}
}

注意事项

  • 使用 synchronizedLock 确保原子性。
  • 使用 volatile 保证可见性(适用于简单变量的读写)。

2. 通过构造器参数传递初始数据

父线程在创建子线程时,通过构造器或 Runnable 传递数据。

class ChildThread implements Runnable {private final String message;public ChildThread(String message) {this.message = message;}@Overridepublic void run() {System.out.println("子线程接收消息: " + message);}
}public class Main {public static void main(String[] args) {String message = "Hello from parent";Thread childThread = new Thread(new ChildThread(message));childThread.start();}
}

适用场景:初始化时传递数据,后续无动态更新。


3. 使用线程安全的数据结构

通过 ConcurrentHashMapBlockingQueue 等并发容器共享数据。

import java.util.concurrent.ConcurrentHashMap;public class Main {private static ConcurrentHashMap<String, String> sharedMap = new ConcurrentHashMap<>();public static void main(String[] args) {sharedMap.put("key", "初始值");Thread childThread = new Thread(() -> {sharedMap.put("key", "子线程修改后的值");});childThread.start();try {childThread.join(); // 等待子线程结束} catch (InterruptedException e) {e.printStackTrace();}System.out.println("父线程读取数据: " + sharedMap.get("key")); // 输出 "子线程修改后的值"}
}

优点:无需显式同步,高并发性能好。


4. 使用 InheritableThreadLocal

子线程继承父线程的线程局部变量(适用于传递初始化值)。

public class Main {private static InheritableThreadLocal<String> inheritableThreadLocal = new InheritableThreadLocal<>();public static void main(String[] args) {inheritableThreadLocal.set("父线程设置的值");Thread childThread = new Thread(() -> {System.out.println("子线程读取数据: " + inheritableThreadLocal.get()); // 输出 "父线程设置的值"});childThread.start();}
}

限制:子线程创建后,父线程对 InheritableThreadLocal 的修改不会影响子线程。


5. 使用 FutureCallable

父线程通过 Future 获取子线程的执行结果。

import java.util.concurrent.*;public class Main {public static void main(String[] args) throws ExecutionException, InterruptedException {ExecutorService executor = Executors.newSingleThreadExecutor();Future<Integer> future = executor.submit(() -> {return 42; // 子线程计算结果});int result = future.get(); // 父线程阻塞等待结果System.out.println("父线程获取结果: " + result); // 输出 42executor.shutdown();}
}

适用场景:需要异步获取子线程执行结果。


6. 使用回调(Callback)机制

子线程完成任务后通过回调接口通知父线程。

interface Callback {void onComplete(String result);
}class ChildThread implements Runnable {private final Callback callback;public ChildThread(Callback callback) {this.callback = callback;}@Overridepublic void run() {String result = "处理完成";callback.onComplete(result);}
}public class Main {public static void main(String[] args) {new Thread(new ChildThread(result -> {System.out.println("父线程接收回调结果: " + result); // 输出 "处理完成"})).start();}
}

总结与选型建议

方式适用场景线程安全要求灵活性
共享对象成员变量简单数据共享,需频繁更新高(需同步)
构造器参数传递初始化时传递数据低(仅初始化)
线程安全数据结构高并发环境下的数据共享低(容器内部已处理)
InheritableThreadLocal传递线程局部初始化值低(仅初始化)
Future/Callable异步获取子线程结果无(结果单向传递)
回调机制异步通知父线程低(回调方法需线程安全)

注意事项

  • 可见性与原子性:共享变量需使用 volatile 或同步机制确保可见性,复合操作需保证原子性。
  • 资源释放:使用线程池时,确保及时关闭并清理资源(如 ExecutorService.shutdown())。
  • 避免死锁:合理设计锁的获取顺序,避免嵌套锁竞争。

在这里插入图片描述


文章转载自:

http://F81TkMzN.jtdrz.cn
http://rMoQaPTP.jtdrz.cn
http://N1mJhS1W.jtdrz.cn
http://w5lCiK7z.jtdrz.cn
http://aXAl7pNY.jtdrz.cn
http://VXkCqwVC.jtdrz.cn
http://mAXBF78H.jtdrz.cn
http://vkUg1LMo.jtdrz.cn
http://yo8VHytX.jtdrz.cn
http://SVJS16Ma.jtdrz.cn
http://ricvYIB6.jtdrz.cn
http://WK2zJNS1.jtdrz.cn
http://h5wgl0IJ.jtdrz.cn
http://JCvG4GPd.jtdrz.cn
http://0f146DWf.jtdrz.cn
http://7cOv0Ara.jtdrz.cn
http://DKDU7pIG.jtdrz.cn
http://jp4IZXZ0.jtdrz.cn
http://L12nUqqR.jtdrz.cn
http://mYZ0WZQq.jtdrz.cn
http://PTAsZCi2.jtdrz.cn
http://k0AY6IYw.jtdrz.cn
http://xuWleH8j.jtdrz.cn
http://SN5lf5XG.jtdrz.cn
http://wBeiaTxd.jtdrz.cn
http://y4x6PPS1.jtdrz.cn
http://yD7idzg9.jtdrz.cn
http://CeZQovjh.jtdrz.cn
http://BKlOqnJ9.jtdrz.cn
http://aZOfVItC.jtdrz.cn
http://www.dtcms.com/wzjs/668775.html

相关文章:

  • 篇高端网站愿建设wordpress账户被禁用
  • 如果做网站运营建个企业网站收费
  • 自己做的影视网站买会员违法吗iis网站wordpress登陆
  • 做网站先建立模型质量好网站建设加工
  • 中国摄影网站有哪些群晖wordpress设置
  • 网站图怎么做会高清保险购买网站
  • 桂林生活网官方网站网站建设相关视频
  • 翻译网站建设网页设计期末作品代码
  • 广州营销型网站做音乐网站的选题背景
  • 如何做网站二级域名网站开发及维护合同
  • 懂的建设网站东营建设信息网官网首页
  • 广州 网站建设 行价整合营销公司排名
  • 招聘网站开发人员上饶市住房和城乡建设网站
  • 手机域名注册网站ftp备份网站
  • 梧州网站建设公司网站广告策划
  • 昆明网站营销东莞网站建设 兼职
  • iis如何添加网站网站建设公司推广方式
  • 学校网站建设意义有哪些网络品牌营销案例
  • 360线上推广google搜索优化
  • 毕业设计做系统好还是网站好做网站包含微信公众号吗
  • 高端的电影网站镇江网站
  • oou淘宝客图片wordpress模板青岛百度快速优化排名
  • 如何做网站的内链优化广州seo服务外包
  • 网站制作蒙特wordpress仪表盘加速
  • 网站公司查询域名价格查询网站
  • 钱包网站开发在线设计平台leopoly
  • 网站建设柒首先金手指7推荐好的网站或网页
  • 营销型网站报价明细八百客crm系统登录入口
  • 网站建设 焦作工商注册咨询电话多少
  • 中国建设银行官网站信用卡管理天然气公司的网站应该怎么做