JUC是什么?java线程基础知识
JUC是什么?
JUC,即java.util.concurrent包的缩写,是java原生的并发包和一些常用的工具类。
(相关资料图)
线程基础知识
线程和进程进程:计算机中运行中的程序,如QQ.exe等。 线程:进程中执行的具体的任务,如打字、自动保存等。 一个进程可以包含多个线程,一个进程至少有一个线程。Java程序至少有两个线程:GC线程和Main线程。 并发和并行并发:多个线程操作同一个资源并且交替执行的过程。 并行:多个线程同时执行,只有在多核CPU下才能完成。 使用多线程或者并发编程的目的:提高效率,让CPU一直工作,达到最高的处理性能。线程的状态线程有6种状态,我们可以从源码中查看具体是哪6种状态。
public enum State { // java能够创建线程吗? 不能! // 新建 NEW, // 运行 RUNNABLE, // 阻塞 BLOCKED, // 等待 WAITING, // 延时等待 TIMED_WAITING, // 终止! TERMINATED;}
很显然,线程的六种状态分别是:新建(NEW)、运行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITTING)、延时等待(TMED_WAITTING)、终止(TERMINATED)。wait和sleep的区别
类不同 wait是属于Object类的方法,sleep是Thread类的方法。在JUC编程中,线程休眠的实现代码是:
TimeUnit.SECONDS.sleep(3)
是否会释放资源 sleep会一直持有锁,不会释放锁,wait则会释放锁。使用范围不同 wait和notify是一组,一般在线程通信的时候使用。sleep是单独的方法,在任何地方都可以使用。是否需要捕获异常 sleep需要捕获中断异常,wait不需要。
Lock锁
传统方式一般采用synchronized关键字来加锁,如以下代码:
package com.coding.demo01;// 传统的 Synchronized// Synchronized 方法 和 Synchronized 块/* * 我们的学习是基于企业级的开发进行的; * 1、架构:高内聚,低耦合 * 2、套路:线程操作资源类,资源类是单独的 */public class Demo01 { public static void main(String[] args) throws InterruptedException { // 1、新建资源类 Ticket ticket = new Ticket(); // 2、线程操纵资源类 new Thread(new Runnable() { public void run() { for (int i = 1; i <=40; i++) { ticket.saleTicket(); } } },"A").start(); new Thread(new Runnable() { public void run() { for (int i = 1; i <=40; i++) { ticket.saleTicket(); } } },"B").start(); new Thread(new Runnable() { public void run() { for (int i = 1; i <=40; class="" private="" int="" number="30;">close=> public synchronized void saleTicket(){ if (number>0){ System.out.println(Thread.currentThread().getName() + "卖出第"+(number--)+"票,还剩:"+number); } }}
现在,我们也可以使用Lock来加锁。
Lock lock=new ReentrantLock()
ReentrantLock,即可重入锁(相当于回家的时候只要开了大门的锁,卧室,厕所不需要解锁就能进入),其默认是非公平锁(不公平,后面的线程可以插队)。如以下代码:
package com.coding.demo01;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/* * JUC之后的操作 * Lock锁 + lambda表达式! */public class Demo02 { public static void main(String[] args) { // 1、新建资源类 Ticket2 ticket = new Ticket2(); // 2、线程操作资源类 , 所有的函数式接口都可以用 lambda表达式简化! // lambda表达式 (参数)->{具体的代码} new Thread(()->{for (int i = 1; i <= 40="" new="" -="">{for (int i = 1; i <= 40="" new="" -="">{for (int i = 1; i <= 40="" class="" reentrantlock="" :="" private="" lock="new" int="" number="" public="" void="" try="" if="">0){ System.out.println(Thread.currentThread().getName() + "卖出第"+(number--)+"票,还剩:"+number); } } catch (Exception e) { e.printStackTrace(); } finally { lock.unlock(); // 解锁 } }}
synchronized和Lock的区别1.synchronized是一个关键字,Lock是一个对象。 2.synchronized无法尝试获取锁,Lock可以尝试获取锁并判断。 3.synchronized会自动释放锁(a线程执行完毕,b如果出现异常也会释放锁),Lock锁必须手动进行释放,不释放就会变成死锁。 4.使用synchronized时,如果线程a获得锁并阻塞,线程b会一直进行等待,使用Lock则可以尝试获取锁,失败了之后就放弃。
5.synchronized一定是非公平的,但Lock锁可以是公平的,需要通过参数进行设置。 6.代码量特别大时,一般使用Lock实现精准控制,synchronized适合代码量较小的同步问题。
生产者消费者问题
线程和线程之间本来是不能通信的,但有时我们需要线程之间进行协调操作。 比如有两个线程:A、B ,还有一个值初始为0,实现两个线程交替执行,对该变量 + 1,-1;交替10次。 先来看使用synchronized实现线程之间通信的版本,代码如下:
package com.coding.demo01;// Synchronized 版/*目的: 有两个线程:A B ,还有一个值初始为0, 实现两个线程交替执行,对该变量 + 1,-1;交替10次 */public class Demo03 { public static void main(String[] args) { Data data = new Data(); // +1 new Thread(()->{ for (int i = 1; i <=10 try="" catch="" interruptedexception="" -1="" new="" -="">{ for (int i = 1; i <=10 ; i++) { try { data.decrement(); } catch (InterruptedException e) { e.printStackTrace(); } } },"B").start(); }}// 资源类// 线程之间的通信: 判断 执行 通知class Data{ private int number = 0; // +1 public synchronized void increment() throws InterruptedException { if (number!=0){ // 判断是否需要等待 this.wait(); } number++; // 执行 System.out.println(Thread.currentThread().getName()+""+number); // 通知 this.notifyAll(); //唤醒所有线程 } // -1 public synchronized void decrement() throws InterruptedException { if (number==0){ // 判断是否需要等待 this.wait(); } number--; // 执行 System.out.println(Thread.currentThread().getName()+""+number); // 通知 this.notifyAll(); //唤醒所有线程 }}
那么问题来了,这四条线程可以实现交替吗?答案是不能!因为会产生虚假唤醒问题,jdk文档中对该问题也有说明。
需要特别注意的if和while的区别,当两个线程同时执行if判断,if只会判断一次,而while会对每一个线程都进行判断。显然,上面的if应该改为while,代码如下:
package com.coding.demo01;// Synchronized 版/*目的: 有两个线程:A B ,还有一个值初始为0, 实现两个线程交替执行,对该变量 + 1,-1;交替10次 传统的 wait 和 notify方法不能实现精准唤醒通知! */public class Demo03 { public static void main(String[] args) { Data data = new Data(); // +1 new Thread(()->{ for (int i = 1; i <=10 try="" catch="" interruptedexception="" new="" -="">{ for (int i = 1; i <=10 try="" catch="" interruptedexception="" -1="" new="" -="">{ for (int i = 1; i <=10 try="" catch="" interruptedexception="" new="" -="">{ for (int i = 1; i <=10 ; i++) { try { data.decrement(); } catch (InterruptedException e) { e.printStackTrace(); } } },"D").start(); }}// 资源类// 线程之间的通信: 判断 执行 通知class Data{ private int number = 0; // +1 public synchronized void increment() throws InterruptedException { while (number!=0){ // 判断是否需要等待 this.wait(); } number++; // 执行 System.out.println(Thread.currentThread().getName()+""+number); // 通知 this.notifyAll(); //唤醒所有线程 } // -1 public synchronized void decrement() throws InterruptedException { while (number==0){ // 判断是否需要等待 this.wait(); } number--; // 执行 System.out.println(Thread.currentThread().getName()+""+number); // 通知 this.notifyAll(); //唤醒所有线程 }}
问题又来了,从测试的结果可以看出,传统的 wait 和 notify方法不能实现精准唤醒通知。 这时我们就需要考虑使用JUC来实现了,先来看看JUC中的一个重要的接口Condition的文档说明。
我们使用Lock锁和Condition来实现精准唤醒线程,代码如下:
package com.coding.demo01;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/*实现线程交替执行!主要的实现目标:精准的唤醒线程! 三个线程:A B C 三个方法:A p5 B p10 C p15 依次循环 */public class Demo04 { public static void main(String[] args) { Data2 data = new Data2(); new Thread(()->{ for (int i = 1; i <= try="" catch="" interruptedexception="" new="" -="">{ for (int i = 1; i <= try="" catch="" interruptedexception="" new="" -="">{ for (int i = 1; i <= 10; i++) { try { data.print15(); } catch (InterruptedException e) { e.printStackTrace(); } } },"C").start(); }}// 资源类class Data2{ private int number = 1; // 1A 2B 3C private Lock lock = new ReentrantLock(); // 实现精准访问 private Condition condition1 = lock.newCondition(); private Condition condition2 = lock.newCondition(); private Condition condition3 = lock.newCondition(); public void print5() throws InterruptedException { lock.lock(); try { // 判断 while (number!=1){ condition1.await(); } // 执行 for (int i = 1; i <= 5; i++) { System.out.println(Thread.currentThread().getName() + "" + i); } // 通知第二个线程干活! number = 2; condition2.signal(); // 唤醒 } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); // 一定要解锁 } } public void print10() throws InterruptedException { lock.lock(); try { // 判断 while (number!=2){ condition2.await(); } // 执行 for (int i = 1; i <= 10; i++) { System.out.println(Thread.currentThread().getName() + "" + i); } // 通知3干活 number = 3; condition3.signal(); } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); } } public void print15() throws InterruptedException { lock.lock(); try { // 判断 while (number!=3){ condition3.await(); } // 执行 for (int i = 1; i <= 15; i++) { System.out.println(Thread.currentThread().getName() + "" + i); } // 通知 1 干活 number = 1; condition1.signal(); } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); } }}
测试结果说明,使用Lock锁很容易就解决上述问题,由此我们可以得到一个结论:一个新技术的出现,一定是为了替换一些旧的技术的!
锁对象的判断方法
1.被synchronized修饰的方法,锁的对象是方法的调用者,当两个方法调用的对象是同一个时,先调用的先执行。 2.没有被synchronized修饰的方法,不是同步方法,不受锁的影响。 3.只要方法被static修饰,不管是否同时被synchronized修饰,锁的对象就是Class模板对象,这个对象是全局唯一的。 4.synchronized锁的是调用的对象,static锁的是这个类的Class模板,这是两个不同的锁。
不安全的集合类
只要在并发环境下,List、Map、Set这些类都是不安全的。 List不安全的代码示例:
package com.coding.unsafe;import java.util.*;import java.util.concurrent.CopyOnWriteArrayList;/** * 故障现象:ConcurrentModificationException 并发修改异常 * 导致原因:add方法没有锁! * 解决方案: * 1、List list = new Vector<>(); //jdk1.0 就存在的!效率低 * 2、List list = Collections.synchronizedList(new ArrayList<>()); * 3、List list = new CopyOnWriteArrayList<>(); * * 什么是 CopyOnWrite; 写入是复制 (思想 COW) * 多个调用者同时要相同的资源;这个有一个指针的概念。 * 读写分离的思想: */public class UnSafeList { public static void main(String[] args) {// List list = Arrays.asList("a", "b", "c");// list.forEach(System.out::println);// List list = new ArrayList<>(); List list = new CopyOnWriteArrayList<>(); for (int i = 1; i <= new="" -="">{ list.add(UUID.randomUUID().toString().substring(0,3)); System.out.println(list); },String.valueOf(i)).start(); } }}
如上述代码所示,解决List不安全问题的方法有两种:
List list = Collections.synchronizedList(new ArrayList<>());List list = new CopyOnWriteArrayList<>();
CopyOnWrite(COW),写入是复制,多个调用者同时要相同的资源,这是一种读写分离的思想,其源码如下:
public boolean add(E e) { final ReentrantLock lock = this.lock; lock.lock(); try { Object[] elements = getArray(); int len = elements.length; Object[] newElements = Arrays.copyOf(elements, len + 1); newElements[len] = e; setArray(newElements); return true; } finally { lock.unlock(); }}
Set不安全的代码示例:
package com.coding.unsafe;import java.util.Collections;import java.util.HashSet;import java.util.Set;import java.util.UUID;import java.util.concurrent.CopyOnWriteArraySet;// ConcurrentModificationExceptionpublic class UnSafeSet { public static void main(String[] args) { // HashSet 底层是什么 就是 HashMap // add,就是 HashMap 的 key; Set set = new HashSet<>();// Set set = Collections.synchronizedSet(new HashSet<>());// Set set = new CopyOnWriteArraySet(); for (int i = 1; i <=30 new="" -="">{ set.add(UUID.randomUUID().toString().substring(0,3)); System.out.println(set); },String.valueOf(i)).start(); } }}
如上述代码所示,解决Set不安全问题的方法有两种:
Set set = Collections.synchronizedSet(new HashSet<>());Set set = new CopyOnWriteArraySet();
Map不安全的代码示例:
package com.coding.unsafe;import java.util.HashMap;import java.util.Map;import java.util.UUID;import java.util.concurrent.ConcurrentHashMap;//ConcurrentModificationExceptionpublic class UnsafeMap { public static void main(String[] args) { // new HashMap<>() 工作中是这样用的吗? 不是 // 加载因子0.75f;,容量 16; 这两个值工作中不一定这样用! // 优化性能! // HashMap 底层数据结构,链表 + 红黑树 // = = = = = = =// Map map = new HashMap<>(); Map map = new ConcurrentHashMap<>(); // 人生如程序,不是选择就是循环,时常的自我总结十分重要! for (int i = 1; i <=30 new="" -="">{ map.put(Thread.currentThread().getName(),UUID.randomUUID().toString().substring(0,3)); System.out.println(map); },String.valueOf(i)).start(); } }}
解决Map不安全问题的方法是使用ConcurrentHashMap来替代HashMap:
Map map = new ConcurrentHashMap<>();
综上所述,要解决一般集合的线程不安全的问题,核心思路就是使用JUC并发包下面的并发安全的集合去替代这些不安全的集合。
标签:
相关推荐:
精彩放送:
- []reference是什么意思?reference的用法有哪些?
- []焦点速递!豆丁文档怎么下载?豆丁文档免费下载方法
- []环球观察:2020年理科征集志愿:安徽省排名较高的4所民办二本院校
- []全球时讯:concession是什么意思?concession的用法
- []JSP基础教程:jspcms第一个JSP的扩展名是什么?
- []热门看点:“超级小桀”直播砍价成功?拼多多:与事实不符
- []东芝电视故障如何维修?东芝电视故障及维修方法介绍
- []热门看点:全球首家!中国电信“全网通”手机来了
- []JUC是什么?java线程基础知识
- []焦点报道:什么是环保硒鼓?使用中出现问题怎么办?
- []热文:笔记本摄像头驱动怎么安装?笔记本摄像头驱动安装方法
- []最新重仓股曝光!刘彦春:A股估值回升远远没有到位
- []即时:integrity是什么意思?integrity的用法
- []世界十大杰出物理学家:牛顿、爱因斯坦、麦克斯韦上榜
- []环球视讯!obee手机怎么刷机?欧比OBEEK8009刷机教程
- []焦点要闻:快乐大本营爱情公寓是哪一期?快乐公寓哪几期?
- []全球观点:无锡社保怎么查询个人账户?无锡社保查询个人账户明细
- []世界新消息丨酷派7230如何刷机?酷派手机刷机流程详解
- []银河证券:运营商盈利能力增强 云网能力有望持续提质
- []全球信息:ibm笔记本故障如何维修?ibm笔记本故障维修方法
- []天天看热讯:游泳时耳朵进水哪种“排水”方式更安全有效?答案解析
- []哪个品牌的蓝牙耳机质量好?Bose、森海塞尔、索尼、Jabra等蓝牙耳机都不错
- []焦点速讯:disc是什么意思?disc的用法有哪些?
- []天天热消息:华为p40怎么升级成鸿蒙系统?华为p40升级鸿蒙系统完整版教程
- []动态焦点:fatigue是什么意思?fatigue的用法有哪些?
- []i8268三星手机怎么样?三星i8268报价及配置
- []库克20亿奖金漫天飞舞!苹果iPhone12系列电池容量曝光
- []【播资讯】想给孩子存钱怎样存合算?儿童银行卡的存款类型有哪些?
- []焦点快报!如何做好微信营销?微商引流微信要怎么设置?
- []全球速读:【技术方案】脉冲电子围栏防护系统设计方案
- []观速讯丨联想y400n怎么样?霸气筋肉车风格联想y400n评测
- []手机定位软件怎么设置?360手机助手教你一招
- []环球微动态丨和太常韦主簿五郎温汤寓目之作翻译 和太常韦主簿五郎温汤寓目之作赏析
- []环球通讯!environment是什么意思?environment用法介绍
- []当前焦点!社保和养老基金持仓曝光 多股获长线资金“潜伏”
- []cad中怎么输入文字?CAD输入文本文字技巧教程
- []聚焦:如何在电脑上安装MySQL服务器?MySQL数据库安装教程详解
- []全球快资讯:蝴蝶效应!苏亚雷斯上演咬人“帽子戏法” 足坛格局发生微妙变化
- []焦点观察:深圳华强北正品市场最新批发拿货价(全套)
- []如何通过bios调节风扇转速?合理调节风扇转速方法
- []成都建筑设计公司有哪些?成都建筑设计公司排名
- []当前聚焦:4年1.5亿美金!德罗赞续约最大合同 到底值不值得?
- []环球微动态丨【知识】theater是什么意思?theater的用法大全
- []世界消息!steam手机令牌怎么绑定?steam令牌绑定教程
- []statue是什么意思?statue的用法你知道吗?
- []sticker是什么意思?sticker的用法有哪些?
- []【天天热闻】步步高手机短信铃声怎么设置?步步高手机短信铃声默认响铃为10秒
- []世界微动态丨如何实现自动化?IT实现工作流程自动化的8个步骤
- []锐志2.5跑高速大概8升油吗?锐志油耗测试
- []世界热资讯!新浪微博怎么加好友?新浪微博加好友的具体操作
- []word如何在任意页开始添加页码?excel如何将光标定位到下一页?
- []小天才宝贝电脑市场报价及市场评价推荐
- []全球最新:【数据分析】门店客流统计的常见技术及其优劣势分析
- []电动车蓄电池坏了怎么办?蓄电池怎样修复?蓄电池修复步骤
- []热点聚焦:学习3d建模没有基础可以学吗?学习3D建模需要多少钱?
- []【热闻】iphone4s怎么换电池?iphone4s更换电池教程
- []焦点热讯:充电风扇哪个牌子好?充电风扇品牌推荐
- []世界快讯:小型冰箱价格多少钱?300-400元的小冰箱推荐
- []天天新动态:99宿舍网四六级成绩怎么查询?99宿舍网四六级成绩查询入口
- []yandex注册验证码怎么填?怎么玩英雄联盟外服手游?
- []当前热议!给查询的字段起别名方式:resultMap自定义映射
- []环球讯息:Ubuntu常用指令有哪些?Ubuntu常用指令及修改快捷键大全
- []【欧洲杯】德国队4-2击败葡萄牙 卫冕冠军球队出局
- []基于产品间共性的“软件”产品线代表了什么?产品线及系统演化
- []环球今亮点!什么是大数据?大数据相关内容介绍
- []linux下搭建Nexus3Maven私服 史上最全搭建MAVEN私服上传并使用JAR包教程
- []环球最资讯丨远兴能源:阿拉善天然碱项目正按计划有序推进,项目一期计划于2023年6月建设完成
- []实时焦点:天下秀:股价受宏观环境、所处行业、国家政策和经营业绩等多种因素影响,敬请留意投资风险
- []【世界速看料】秦川机床:公司所处机床工具行业是国民经济基础性、战略性行业,为整个制造业提供服务
- []焦点信息:货拉拉递表港交所 为2022年全球已完成订单数最大的物流交易平台
- []世界播报:被期待的益田 待唤醒的东直门枢纽商业
- []融创中国公布境外债务重组方案 预计降低债务规模约30亿美元
- []环球热头条丨国豪置业4.21亿竞得台州玉环1宗宅地 溢价率15.68%
- []浙江丽水:推广“带押过户”业务 继续提高住房公积金贷款最高限额
- []最资讯丨酒店餐饮到了必须革命的时候
- []当前头条:新职业新业态拓宽就业空间——就业大省扩就业观察
- []即时:嘉里物流拟发行7.8亿港元3.30厘永续可换股证券
- []每日简讯:中天湖南集团公开发售1.27亿股 每股售价1.18港元
- []热点在线丨文旅地产项目持续热销 西双版纳楼市热闹到反常?
- []环球热消息:3月29日重点数据和大事件前瞻
- []环球实时:地图导航APP开发出行方案解决分析,以及有哪些优势?
- []世界新资讯:李宁旗下非凡中国再次递表港交所 三年收入复合增长率190.3%
- []每日时讯!苏新服务:2022年实现收入5.22亿元
- []德商产投:2022年实现收入2.67亿元
- []热头条丨银城生活服务:2022归属股东净利润1.06亿元 同比增加约20.3%
- []讯息:涉水险在哪个险种里面
- []金地凌克:房企经营就像踩单车,不前行就会跌落 房企需要新投资
- []快播:微电生理2022年净利297.18万同比扭亏为盈 总经理孙毅勇薪酬184.34万
- []热门:欧盟就亚马逊如何使用小卖家数据展开反垄断调查
- []全球热文:荣盛石化获沙特阿美高溢价收购 股价封涨停
- []佳兆业健康2022年总收益1.91亿港元 同比下降约9.05%
- []天天速看:莱蒙国际:2022年权益股东应占亏损约为1.85亿港元
- []世界看热讯:莱蒙国际2022年收入36.67亿港元 股东应占亏损1.85亿港元
- []动态:贝壳单日大额回购持续,累计金额近2.1亿美金
- []全球时讯:佳兆业健康:2022年实现收入1.91亿港元
- []环球快看点丨合富辉煌2022年收入15.16亿港元 归母净亏损2.46亿港元
- []诸葛找房关荣雪:关于北京昌平2宗地块成交情况的快评
- []百事通!浙江丽水:二次申请公积金贷款最高可贷80万
- []天天播报:合富辉煌:2022年净亏损7.48亿港元
- []世界快资讯:Keep最新招股书:2022年净亏损大幅收窄 下降至6.67亿元
- 环球今日报丨上海证大:2022年实现收入3.96亿港元
- 当前观察:龙泉股份:3月27日公司高管刘强、王晓军增持公司股份合计11.26万股
- 黔源电力:公司披露的年报按照深交所规定的要求及格式进行披露
- 今日关注:Z2线这些项目设计方案总平面图正在公示
- 当前信息:金地商置:2022年实现收入103.02亿元
- 世界今日讯!雅生活服务:2022年归属股东净利润18.39亿元
- 快资讯丨信达地产:2022年归属股东净利润5.50亿元
- 焦点讯息:瑞松科技:3月24日公司高管颜雪涛减持公司股份合计5148股
- 焦点热文:纳睿雷达2022年净利1.06亿同比增长9.66% 董事长包晓军薪酬83.48万
- 中公高科:3月27日公司高管潘宗俊减持公司股份合计1500股
- 光大永年:2022年实现收入5229万元
- 金地3.4亿西安拿地 董事长凌克回应称:今年将主动把握土地投资机会
- 每日关注!尚太科技:公司目前专注于石墨负极材料业务,对负极材料新方向、新技术保持积极关注
- 【全球速看料】斗破:萧炎凭实力开后宫!萧炎三招引起曹颖注意,温柔小姐姐诞生
- 全球滚动:顺丰同城:杨尊淼辞去公司监事一职 高源接任
- 全球微动态丨京投发展:控股股东已累计增持766.78万股 占总股本1.04%
- 播报:辉煌科技:您可拨打公司投资者热线 0371-67371035 咨询,我们将在核实您的股东身份后告知
- 环球快看:盘龙药业 :近3年未获药品批文,销售费用为研发费用的28倍
- 世界新资讯:渝太地产2022年收入27.07亿港元 归母亏损4.76亿港元
- 环球信息:北新建材:2022年公司龙骨销量约为34万吨
- 微速讯:全球最大化学链燃烧示范装置建成 将尝试大规模碳捕集
- 热点评!家居 | 云米科技2022年净亏损2.76亿元
- 财面儿丨大发地产因未偿还约130万港元 收到海通证券“清盘呈请”
- 新郑市浩润置业有限公司摘龙湖镇24亩住宅地
- 全球热点!ST国华:截至2023年3月20日公司股东人数为14,796户
- 当前讯息:南大光电:光刻胶是客制化产品,技术含量高,验证周期长
- 顺丰同城净亏损收窄约7成至2.9亿元 收入同增25.6%至102.7亿元
- 世界最资讯丨苏州高新20亿元公募债券项目更新至“已受理”
- 阿莱德:公司产品可应用于卫星通信领域
- 【全球播资讯】携程最新股权结构:百度持股10.7%,梁建章持股4.4%
- 碳酸锂价格暴跌!储能行业竞争加剧?
- 焦点热文:中国核能科技:拟于香港青衣友联船厂投建光伏电站
- 世界今日讯!这家光伏企业IPO进程更新 2022年净利润大涨1700%
- 全球看热讯:煤炭保供如何防范产能过剩?中煤协:研究建立“弹性产能”机制
- 【报资讯】松下与中国信通院围绕绿色数字经济签订战略合作协议
- 【环球报资讯】美克家居为旗下多家公司提供担保 累计对外担保总额超16亿
- 世界快看:深圳卓越商管10亿公司债即将付息 票面利率6.66%
- 环球视讯!中国国贸:2022年营收34.4亿元 利润总额略增至14.9亿元
- 每日简讯:中国国贸:2022年实现收入34.42亿元
- 诸葛找房:3月全国大中城市租金均价回落 西安、成都连续2月进入涨幅TOP5
- 舒泰神:公司2023年一季度报告预计于2023年04月26日披露
- 每日热门:盛通股份:已经在校区开展AI绘画课程体验课
- 【全球播资讯】ST爱迪尔:截至目前,法院尚未裁定受理债权人对公司的重整申请
- 今日要闻!3月28日荣盛石化(002493)龙虎榜数据:机构净买入2301.34万元(3日),北向资金净买入2988.35万元(3日)
- 全球新动态:迪士尼启动7000人大裁员:包括主题公园和ESPN,本周启动首轮
- 东方雨虹总部研发基地E楼被动房宿舍项目获评“北京市超低能耗建筑示范工程”
- 【环球新要闻】探寻教育公益的创新与可能 龙湖公益基金会助力第七届中国教育公益组织双年会
- 再续高品质人居之作 海开控股不断跃升的逻辑与底气
- 【环球快播报】我武生物:具体的发病人数和过敏比例等数据可参考相关文献
- 中国金茂:2022年实现收入829.91亿元
- 共建时代方略,共营未来渠道:法恩莎 X 2021-2022住宅产业年会
- 全球聚焦:欣明置业联合体14.13亿元竞得绍兴柯桥区1宗地块
- 右手美味,左手哑铃——宁波阪急春日饮食训练高能计划
- 当前通讯!中国金茂2022销售排名逆势跃升至TOP12,回款率104%创新高
- 热点在线丨先进数通:没有完整的信息系统安全方案,根本无法获得企业客户的认可
- 产品经理日常丨竞品调研怎么做才更有价值?
- 【全球聚看点】美原油交易策略:两大利好支撑,油价或启动新一轮涨势?
- 今日聚焦!龙光荣获“2023房地产企业品质交付力卓越表现”奖
- 怀化城建完成发行3亿短期融资券 利率5.05%
- 万达商管10亿中期票据回售 利率调整至6.60%
- 天天播报:3月28日多利科技涨停分析:一体化压铸,汽车零部件,特斯拉概念热股
- 房地美2月抵押贷款组合总额超3.42万亿美元 为2016年来首次下降
- 今日热议:3月28日欣贺股份涨停分析:纺织服装概念热股
- 焦点报道:深圳国际:2022年实现收入约港币141亿元
- 每日看点!3月28日三江购物涨停分析:新零售,阿里巴巴概念股概念热股
- 每日焦点!锡装股份:阿科玛是公司客户,公司会持续关注与公司主业相关的项目动态
- 环球热议:3月28日中油资本涨停分析:中伊概念,新疆,跨境支付概念热股
- 当前关注:就算看起来不体面,但魏勇也想让BAW好好活下去
- 天天信息:股票一阴破三线是什么意思
- 每日速看!我买的股票停牌了怎么办
- 【天天时快讯】恒生指数最低交易手数是
- 杠杆资金大幅买入的股票是好还是坏
- 全球观速讯丨重庆迈瑞城投拟发行9.5亿元短期融资券 期限1年
- 环球热头条丨上海徐汇区:力争到2025年新增上市企业20家 储备数量达到500家
- 全球热议:广西柳州建设投资将于2023年5月4日回售公司债
- 【天天时快讯】恒宇信通:截至2023年3月20日,公司股东总户数为9026户
- 远行客民宿-塑造城市民宿典范
- 鸿博股份:公司将根据市场需求,同时基于自身实际的发展规划,进行合理的算力扩容投资
- 每日热讯!网商贷怎么协商延期还款
- 世界热点评!股票印花税多少个点
- 今日越南盾对人民币汇率最新价格(2023年3月28日)
- 【环球新视野】手机银行可以炒股吗
- 【天天聚看点】股票一级市场和二级市场什么意思
- 最资讯丨深圳国际2022年收入141亿港元 股东应占盈利下跌65%
- 利好银价!银饰在时装周大放光彩,零售商预计今年需求保持稳定
- 天天热头条丨现货黄金交易策略:避险需求消退,金价短线仍存进一步下行风险
- 绍兴柯桥区低密宅地14.13亿元完成出让 溢价率30.23%
- 环球今日报丨一张图:黄金原油外汇股指"枢纽点+多空占比"一览(2023/03/28周二)
- 全球即时看!蚂蚁集团投教基地“一司一省一高校”再开课,养老话题引发大学生关注
- 环球头条:15部门联合印发《关于加强经营性自建房安全管理的通知》
- 万通智控:感谢关注万通智控!PPM传感器、蓝牙传感器和云编程传感器分别是三种不同技术路线的传感器
- 今亮点!华润万象生活:终止收购祥生活物业事项
- 陕西投资集团6.5亿元ABS债券项目更新至“已反馈”
- 当前视讯!大连万达10亿元中票将于3月28日开始回售 票面利率上调至6.60%
- 万物云披露上市后首份年报:收入超300亿元,归母净利下滑近10%
- 三节打卡!英格拉姆19中12拿下29分6板 正负值+34
- 每日关注!郑愁予的错误怎么写的?郑愁予的错误诗词赏析?
- 每日短讯:关于快的成语有哪些?关于慢的成语有哪些?
- 烧白怎么做?烧白的简单做法有哪些?
- 企业业绩怎么评价?企业业绩评价方法有哪些?