速读:程序、进程和线程——多线程的创建方法
目录
【资料图】
程序、进程和线程的概念
多线程的优点
Thread类关于多线程的创建
Thread类的相关方法
线程的调度
线程的五种状态
线程的同步
总结同步方法
衍生内容————单例设计模式
死锁问题
锁的概念
sleep()和wait()的异同
首先要明确几个概念
程序、进程和线程的概念
程序:完成特定任务,用某种特殊的语言编写的一组指令的集合
进程:是执行路径,一个进程同一时间并行或者正在运行的程序
线程:是执行路径,一个进程同一时间并行或者执行多个进程,就是多线程
注:进程中也有可能有多个线程
CPU也分为多核CPU和单核CPU
单核CPU:实际上进行的是某种意义上的假CPU,一个CPU同时做好多事,如果一个没有准备好,就先将该事件挂起,去进行别的,可以用一张图来表示
多核CPU(取决与主频来利用哪个):多核CPU就相当于多个单核CPU工作
同时也要解释两个词的含义
并行:多个CPU任务一起进行
并发:一个CPU做多个任务
注:并发只是看上去“同时”,但是实际上只是在CPU上进行高速的切换任务,以至于仅仅是看上去是同时,并行才是真正意义上的同时
多线程的优点
1、提高应用程序的响应
2、提高CPU的利用率
3、改善程序结构,每个线程独立运行,互不干扰,便于修改
提到多线程,就不得不提一个特殊的类
Thread类关于多线程的创建
方法一:
1、创建一个继承于Thread类的子类
2、重写Thread类中的run()
3、创建Thread类子类的对象(要在主线程上创建)、
4、通过对象去调用start()
想要创建一个多线程的代码如下
//主函数中的体现为//1、创建了继承Thread的子类//在继承Thread中的表现为public class ExtendsThread extends Thread { @Override //2、此处为标准的对于run()函数重写 //对run()函数的重写就相当于对于这一条线程中你想做的所有任务 public void run() { super.run(); for(int i=0;i<=20;i++) { System.out.println(i); } }}public class ThreadTest { public static void main(String[]args) { //3、创建了继承Thread子类的对象 Thread et=new ExtendsThread(); //4、通过对象调用了start() et.start(); //调用start()之后就开启多线程 }}
此处需要注意的是
1、run方法的重写:将这个线程要执行的所有操作全部都声明在run方法中
2、et.run()也能在主函数中直接调用,也能完整的执行在run方法中的指令,但是不能体现多线程,就仅仅是将指令完成,et.run()就仅仅只是调用方法看
3、不能够让已经start()的线程再去重启线程
4、可以创建多个对于ExtendsThread的对象,此时这个对象可以再次开始start(),相当于多开了一个线程,只不过执行的是相同内容
5、匿名子类与匿名对象同样适用
public class ThreadTest { public static void main(String[]args) { Thread et=new ExtendsThread(); //此处为体现多线程,同时开启两个线程 et.start(); //以下即为匿名子类 //直接开启多线程 new Thread(){ public void run() { super.run(); for(int i=0;i<=10;i++) { System.out.println(i+"#"+i); } } }.start(); }}public class ExtendsThread extends Thread { @Override public void run() { super.run(); for(int i=0;i<=10;i++) { System.out.println(i+"*"+i); } }}
第一次的执行结果
方法二:
1、创建一个实现了Runnable接口的类
2、实现Runnable接口中的抽象方法
3、创建实现类对象
4、将此对象作为参数传至Thread类的构造器,创造Thread类的对象
5、利用Thread()类的对象调用start()
public class RunnalbeThread implements Runnable//1、创建一个实现Runnable的类{ @Override//2、类中重写Runnable的方法,也就是run方法 public void run() { for(int i=1;i<=10;i++) { System.out.println(Thread.currentThread().getName()+":"+i); } }}public class ThreadTest { public static void main(String[] args) { Thread rt=new Thread(new RunnalbeThread()); //3、创建一个对应类的对象 //4、将这个对象传入到Thread的构造器 rt.start(); //5、用这个对应的Thread对象来继续调用start() rt.setName("线程3"); for(int i=1;i<=10;i++) { System.out.println(Thread.currentThread().getName()+":"+i+"-"+Thread.currentThread().isAlive()); } }}
在这个地方,如果没有创建匿名对象(对于实现Runnable的实现类),一个实现类的对象,可以多次传入到Thread的构造器里面,创造更多的线程
两种方法的比较
继承法(方法一)由于Java的单继承性,导致如果需要继承Thread类的类由原本的一套体系,可能会影响该代码的实现,由此看来,实现接口的方式是更加活泛的,更自由。
实操中优先选择Runnable接口的方式
1、实现的方式没有单继承性的限制
2、实现的方式更适合多个线程共享数据的情况
注:Thread类也实现了Runnable接口
Thread类的相关方法
1、String getName();
返回线程名称
2、void setName(String name);
设置线程名称
public static void main(String[] args) { Thread et = new ExtendsThread(); et.setName("线程--1"); System.out.printf(et.getName());}
运行结果
此处需要注意的是,主线程也是可以命名的,如以下代码
public class ThreadTest { public static void main(String[] args) { Thread et = new ExtendsThread(); Thread.currentThread().setName("主线程"); System.out.printf(Thread.currentThread().getName()); }}
运行结果如下
3、currentThread()方法
静态方法,返回当前执行此代码的线程(对象)
4、yield()方法
释放当前CPU的执行权
也存在当我们释放完执行权之后,CPU再次将执行权分配给目前线程的情况
5、join()方法
相当于在原本的线程1上,让另一个线程2截断,知道这个线程2执行结束,否则不再进行线程1(在线程1之中调用线程2的join方法)
代码测试如下
public class ExtendsThread extends Thread{ @Override public void run() { super.run(); for(int i=0;i<=10;i++) { System.out.println(Thread.currentThread().getName()+":"+i+"*"+i); } }}public class ExtendsThread2 extends Thread{ public void run() { super.run(); for(int i=0;i<=10;i++) { System.out.println(Thread.currentThread().getName()+":"+i+"#"+i); } }}public class ThreadTest { public static void main(String[] args) { Thread et = new ExtendsThread(); Thread et2=new ExtendsThread2(); et.start(); et2.start(); et.setName("线程1"); et2.setName("线程2"); Thread.currentThread().setName("主线程"); for(int i=0;i<=20;i++) { System.out.println(Thread.currentThread().getName()+":"+i); if(i%5==0) { try { et2.join(); } catch (InterruptedException e) { e.printStackTrace(); } } } }}
测试结果如下
当主线程的i跑到5的时候,此时调用了et.join()和et2.join()此时的主线程已经被挂起了,直到线程1和线程2运行完之后,才会继续主线程的进行。
6、stop()
强制结束线程,可以提前结束线程的生命周期。(不推荐使用stop()结束进程)
public class ExtendsThread extends Thread{ @Override public void run() { super.run(); for(int i=0;i<=10;i++) { System.out.println(Thread.currentThread().getName()+":"+i+"*"+i); if(i==5) { Thread.currentThread().stop(); //此处用stop强制停止了 //当i=5的时候强制停止线程 } } }}public class ThreadTest { public static void main(String[] args) { Thread et = new ExtendsThread(); Thread et2=new ExtendsThread2(); et.start(); et.setName("线程1"); Thread.currentThread().setName("主线程"); for(int i=1;i<=10;i++) { System.out.println(Thread.currentThread().getName()+":"+i); } }}
测试结果
如图所示,线程1确实只进行到i=5的时候
7、sleep(long millitime)
强制线程进入休眠,单位是毫秒
在指定时间内强制休眠
需要注意的是,对某个线程使用sleep的话,该线程就会进入到挂起状态,在指定时间挂起。相当于主动让出了CPU的执行权。
8、isAlive()
判断当前线程是否存活
举例如下
public class ExtendsThread extends Thread{ @Override public void run() { super.run(); for(int i=0;i<=10;i++) { System.out.println(Thread.currentThread().getName()+":"+i+"-"+Thread.currentThread().isAlive()); } }}public class ThreadTest { public static void main(String[] args) { Thread et = new ExtendsThread(); Thread et2=new ExtendsThread2(); et.start(); et.setName("线程1"); Thread.currentThread().setName("主线程"); for(int i=1;i<=10;i++) { System.out.println(Thread.currentThread().getName()+":"+i+"-"+Thread.currentThread().isAlive()); } System.out.println(et.isAlive()); }}
结果如下
如图所示,在代码的最后,et所开启的线程已经结束,所以此时打印出来的false
线程的调度
线程的进行主要是看时间片,一般情况下,多个线程都是并发,所以对于CPU的执行权一般是进行抢夺,高优先级的线程优先抢夺CPU的执行权。
说到这里就不得不提到线程的优先等级(这里的优先级都是在线程诞生的时候就是设置好的,默认为5)
>MAX_PRIORITY:10
>MIN_PRIORITY:1
>NORM_PRIORITY:5
也有两个方法是关于线程的优先级
1、getPriority():返回线程优先级
2、setPriority(int newPriority):改变线程的优先级
高优先级抢占低优先级的线程的CPU执行权,但是是从概率上而言,高优先级的线程有更大的概率去执行CPU
线程的五种状态
1、新建:当一个Thread类或其子类的声明并创建时,新生线程处于此状态
2、就绪:当线程被start()之后,就会进入队列等待CPU的时间片
3、运行:获得CPU资源,进入运行状态,run定义了线程操作和功能
4、阻塞:在某种情况下,被人为挂起或执行输入输出,让出CPU的执行权
5、死亡:线程完成了全部工作或被提前强制性中止(stop),或者出现异常导致结束,比如join()会使线程被挂起,造成线程阻塞
线程的同步
线程的安全问题(不一定出现线程安全问题)
没有sleep()出现时,错误的概率小,但是安全问题总是要解决的
有可能会出现极端情况
此时带入一个场景,比如说一个线程代表一个窗口,一个售票窗口,线程每进行一次就挂起一次,会打印票号,但是如果正常进行,票号应该是连号,但是会出现如下情况
代码如下
public class RunnalbeThread implements Runnable{ public static int num=30; public static int tnum=1; @Override public void run() { while(num!=0) { if(num>0) { num--; tnum++; System.out.println(Thread.currentThread().getName()+":"+tnum); try { Thread.currentThread().sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }}public class ThreadTest { public static void main(String[] args) { Thread rt3 = new Thread(new RunnalbeThread()); Thread rt2 = new Thread(new RunnalbeThread()); Thread rt = new Thread(new RunnalbeThread()); rt2.start(); rt3.start(); rt.start(); rt3.setName("线程3"); rt.setName("线程1"); rt2.setName("线程2"); }}
代码测试结果如下
很明显的,会出现重号的现象
原因:当某个线程操作票的过程中,尚未完成操作,另一个线程参与进来,也对车票进行操作(相当于是共享数据)
如何解决
加锁
当一个线程在操作共享数据的时候,其他线程不能参与,直到线程a操作结束,其他线程才能开始操作。即使a处于阻塞状态,也不能被改变
方法一:同步代码块
synchronized(同步监视器){
需要被同步的代码}
说明:操作共享数据的代码,即为需要被同步的代码
同步监视器,俗称锁,可以随意扔一个对象进去
要求:多个线程要共用同一把锁,不能设置多个锁,此时不能使用匿名
缺点:操作同步代码时,仅能有一个线程操作,其他的都在等待,相当于是一个单线程操作过程,相对而言效率会很低
此时会出现一个锁不唯一的问题,由于锁的创建在Thread的子类中,但是使用此方法创造进程需要newThread的子类的对象,此时会new出很多锁,此时最好的解决方案就是把锁进行static
方法展示
public class RunnalbeThread implements Runnable{ public static int num=30; @Override public void run() { while(num!=0) { try { Thread.currentThread().sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (RunnalbeThread.class) { if(num>0) { num--; System.out.println(Thread.currentThread().getName()+":"+num); } } } }}public class ThreadTest { public static void main(String[] args) { Thread rt3 = new Thread(new RunnalbeThread()); Thread rt2 = new Thread(new RunnalbeThread()); Thread rt = new Thread(new RunnalbeThread()); rt2.start(); rt3.start(); rt.start(); rt3.setName("线程3"); rt.setName("线程1"); rt2.setName("线程2"); }}
代码中,把对于所有共享数据的操作全部都包起来了,达到监视的作用
结果如下
还有一个需要注意的点就是如果是用接口实现的方法创建的线程,可以考虑使用this的,之所以继承法不能使用,是因为其依靠创造他本身的对象来创造线程,但是实现类只创造一个对象,其他对象都是利用Thread进行创造的。
但是我的代码中,监视器之后的锁就不能使用this,因为在主函数中,我用的创建方法并不是一个对象传入到Thread的构造器中,我使用了匿名对象,如果使用this,每一次的锁都是不一样的锁,无法起到监视作用了
同时,在我的代码中,使用了synchronized (类名.class)这种方式,在这里需要注意的是,类本身也是一个对象,类仅加载一次,与每次new完之后出现的新对象不同。所以在我看来,类是一个完美的锁,不会出现重复的现象。
也需要注意对于同步代码的包装。要注意包装的范围,少包不能解决安全问题,包多了会影响效率,而且也容易出现新的问题。
方式二:
1、同步方法实现Runnable接口
synchronized可以修饰方法,但是需要符合题意,一般情况下不建议使用
在同步方法的内部,就和使用synchronized包起来是一个效果
使用同步方法时,同步监视器就是this
2、同步方法继承Thread类的方法
对于继承法而言,很明显不能直接加synchronized,加了synchronized之后,会自动使用this作为监视器,很显然不行,此时应该将方法改成静态
总结同步方法
1、仍涉及同步监视器,只是不需要显式声明
2、非静态的同步方法是this,静态方法的监视器视为当前类本身
衍生内容————单例设计模式
1、懒汉式(线程安全)
先来分析一下,在原本对于懒汉式的代码中,线程安全可能会出现的部位
public class Bank { private Bank(){} private static Bank instance=null; public static Bank getInstance() { if(instance==null) { instance=new Bank(); } //在此段就容易出现堵塞或者就绪,当多线程在此处参与时,设线程a、线程b //a判断了instance==null,已经进入了语句,此时CPU将执行权切换给了b或 //a由于某种原因阻塞了,那么此时可能就不仅仅创建了一个对象 return instance; }}//而在关于单例式操作,同时满足有多个线程,有共享数据这两个条件,可以实现线程安全
本质上就是线程a、b抢锁,谁先抢到就谁先造
如果想用同步方法,在本例中就可以直接将getInstance这个方法直接使用synchronized直接修饰,就可以解决线程安全问题
如果想使用同步代码块,就可以使用synchronized将getInstance这个方法中的内容直接包裹,并且利用Bank.class对代码进行监视(效率差)
同步代码块——方法一
public class Bank { private Bank(){} private static Bank instance=null; public static Bank getInstance() { if(instance==null) { synchronized(Bank.class) { instance=new Bank(); } } return instance; }}
同步代码块——方法二
public class Bank { private Bank(){} private static Bank instance=null; public static Bank getInstance() { synchronized(Bank.class) { if(instance==null) { instance=new Bank(); } } return instance; }}
两个方法在使用上的区别不大,都可以正常使用,但是实际上方法一的效率更高
假设现在有线程1和线程2,当线程1率先抢到CPU控制权,先制造了对象,线程2在方法二中仍停留在synchronized语句上等待,一直到线程1制造完对象,线程2才能够进入if,判断失败之后离开该方法,但是在方法一中,线程2先进入判断,如果1已经造完对象了,那么线程2就会直接离开。线程2就不会再进入等待区。
死锁问题
不同的线程分别占用了对象所需资源不放,都在等对方放弃,形成死锁
>不出现异常,不出现提示,所有的线程阻塞,不再进行
使用同步的时候,一定要避免死锁问题出现
锁的概念
Lock实际上就是一个接口,需要有实现类
Lock接口的具体使用,主要是对其实现类:Reentrantlock的使用
Reentrantlock
这个类有两个构造器,有一个形参fair
如果fair是true,就遵循先入先出,按照abc顺序开锁
如果fair是false或者没有参数,那么就是abc抢锁,谁先抢到谁先开
1、实例化Reentrantlock
2、将同步代码放到try中,在try首行调用Reentrantlock的对象调用Lock(),也可以调用解锁,try-finally,其中不使用catch,只是想让finally无论如果先给Lock解锁,即使try过程有异常,也会给Lock解锁
(其实本质上也就是上锁,只不过Lock需要手动开锁,但是synchronized不需要,synchronized自动就会开锁)
synchronized和Lock的异同
synchronized机制在执行完同步代码块后自动释放同步监视器
Lock需要手动开锁,不然会一直锁定一个线程不放
基本都会使用synchronized,但是实际上更建议使用Lock
sleep()和wait()的异同
相同:都可以使当前线程进入阻塞
不同:
1、两个方法声明位置不同,Thread类中声明sleep(),Object类中声明wait()
2、调用范围不同,sleep()在任何场景都能调用,wait()必须使用在同步方法或者同步代码块中
3、关于是否释放同步监视器,如果二者都在同步中,sleep()不释放锁,但是wait()会释放锁
标签:
相关推荐:
精彩放送:
- []速读:程序、进程和线程——多线程的创建方法
- []每日观点:【WOTD】remittance 释义/词源/示例 词源词根演化
- []全球视点!什么是扁平化设计?扁平化时代之后会怎样?
- []struts的框架介绍 Struts2框架的大致处理流程
- []微信支付如何关闭“自动扣费”?关闭微信自动扣费的方法步骤
- []全球热点评!如何搭建VIE架构?VIE架构如何实现海外上市?
- []安琪酵母:人类饮食多样化,正常食用米面不会对人体内的胰岛素产生不利影响,合理膳食,管住嘴,迈开腿
- []看热讯:Kitten-少儿编程的首选工具 Kitten-少儿编程详情介绍
- []世界速讯:rolling(k)函数的用法详解 例子说明rolling函数的用法
- []世界速看:java的序列化机制是什么?java序列化ID的作用
- []环球快看点丨PMA的应用是什么?基于PMA-qPCR的生物学检测方法
- []与熊论道为什么解码不了?“熊”孩子都有哪些表现?
- []新开源:年度审计仍在进行中,公司一月份已公告业绩预告
- []安宁股份:截至2023年2月28日股东人数20,818
- []gpi是什么意思
- []焦点日报:怎么才可以贷款,需要满足以下五个条件
- []玲娜贝儿首次与游客“贴贴”,上海迪士尼门票热度环比大增350%
- []白银股票的十大龙头股,概念龙头股名单一览
- []每日消息!华住、锦江与雅高的十年“恩怨”
- []银行卡账户名称是什么意思
- []蒲公英如何祛斑
- []环球新消息丨无锡哪里好玩?无锡旅游景点有哪些?
- []哪些甜红葡萄酒最好喝?分享四种最好喝的甜红葡萄酒
- []我的小米账号为什么登不上去了?小米账号登不上去的解决方式?
- []全球热资讯!徐州财经学校是个什么样的学校?徐州财经学校资料介绍?
- []勤哲Excel服务器无代码实现生物科技企业管理系统
- []白博美贵还是黄博美贵?为什么?
- []天天热资讯!国防科技大学和清华北大比怎么样?北京大学哪一年创办?
- []【全球独家】蜂巢能源携手龙净环保,合资储能电池项目龙岩开工
- []天天热文:氢能源股票龙头股,氢能源龙头股票盘点
- []当前头条:汽车排量是什么意思?中国轿车级别怎么划分?
- []环球短讯!大学生的就业竞争力主要包括哪些?大学生的就业竞争力介绍?
- []全球消息!g2030cpu是哪一年的?g2030cpu怎么样?
- []全球微头条丨洛阳龙门石窟夜景春节开放吗?“夜游龙门”活动时间?
- []美畅股份:38μ以下规格的金刚线是公司目前主要出货产品,产品价格相对稳定
- []资讯推荐:A股快报 | 物流板块早间开盘上涨 嘉友国际涨超8%
- []环球报道:港股房地产股走低 旭辉控股集团跌超4%
- []锦江集团2018年公司债即将到期兑付及摘牌 利率3.35%
- []最新:仁恒置地2月签约预售增长243.0%至人民币36.67亿元
- []全球简讯:湖北联发投集团10亿中期票据将到期兑付 票面利率5.9%
- []国中水务:公司主营业务的具体情况,您可以关注公司发布在上海证券交易所网站上的公司年报
- []当前观点:罗莱生活:公司已有抗H1N1病毒的自主知识产权技术,并同时储备了抗菌技术
- []世界简讯:* 拟赴港上市难掩业绩跳水困境,绝味食品逼近跌停
- []次级贷款的定义,贷款机构向信用较差的人发放的贷款
- []全球今亮点!“黑马”基金经理来了!
- []环球今亮点!银行储蓄利率2020年利率
- []微速讯:2021年创业板50股票一览表 2021创业板50支股票一览表
- []前沿热点:持仓是什么意思
- []怎样购买基金,有以下三种方法
- []每日看点!寻衅滋事罪怎么量刑
- []世界快看点丨财面儿丨越秀地产:前2月合同销售额约225.96亿元 同比上升约187.3%
- []快播:航天动力:公司未收到相关信息,公司按照相关法律法规履行信息披露义务,不存在应披露而未披露的信息
- []世界热点!科远智慧:公司自主研发并实现产业化推广的SyncBase实时数据库已经在数千家工业企业取得广泛应用
- []每日快播:沈晓玲等:房企如何应对现房销售试点?
- []家居丨美克家居:为控股股东美克集团提供6000万元担保
- []短讯!新规实施!外墙面层计入建筑面积,公摊变大了?
- []世界热点!同达创业:公司目前没有应披露未披露信息
- []最资讯丨家居丨梦百合:副总裁王震增持3.84万股公司股份 耗资45.12万元
- []【速看料】中国核建:中国核建是中核集团控股的专业化上市公司,是中核集团完整的核产业链中的重要一环
- []淘气值怎么增加 淘气值如何增加
- []全球热推荐:余额宝年利率 余额宝的年利率
- []环球快看点丨权益基金发行升温 3月份以来新发数量占比超60%
- []全球新消息丨光能杯储能主题演讲第五弹:面向投资商和工商业业主的分布式储能解决方案选择策略
- []车险排行榜 车险公司排行榜
- []当前动态:全国城市经济排名2021最新排名,上海排名第一
- []世界最新:中金:政策扶持+产业升级 智慧家居市场成长可期
- []每日简讯:中泰证券:银行股核心逻辑是宏观经济 坚持修复逻辑和确定性增长逻辑两条主线
- []世界今热点:尚太科技:行业的供需起伏波动是市场经济正常的表现形式,大浪淘沙,有利于有综合竞争优势的企业发展壮大
- []世界快看:又有A股知名公司"出事"!副总裁兼财务总监涉嫌职务犯罪,影响多大?
- []南昌中溢置业挂牌杭州通原地产40%股权 底价8454万元
- []普天科技:公司在开展5G相关业务的同时,也在积极探索和跟进6G的行业发展趋势
- []华侨城拟发行20亿元超短期融资券 申购区间2.5%-2.8%
- []国家队出场次数即将破百,优缺点明显的张琳芃,算亚洲一流后卫么
- []天天微速讯:折纸王子蝎子怎么折_折纸王子教你折毒蝎子
- []【新视野】疫情过后,酒店餐饮用工如何破局?
- []每日热议!携程集团扭亏为盈 2022年全年录得净利润14亿元
- []视焦点讯!改善居住:不必买,租也行!
- []沈晓玲等:多地鼓励现房销售试点,房企如何调整应对?
- []焦点信息:全国政协委员戴斌:旅游需要网红,但网红不是旅游的全部
- []真兰仪表:公司生产的气体流量计是一种精密计量器具,主要用于天然气的贸易计量与结算,其准确度达1.0级
- []【世界聚看点】12306网站无法退票_12306网站无法登陆
- []天天快报!教育部发通知,要及时淘汰不适应社会需要的学科专业,各位觉得哪些专业应被淘汰?
- []歧路亡羊的故事概括20字_歧路亡羊的故事概括
- []全球头条:绿城中国(03900.HK)前4个月总合同销售金额约637亿元
- []全球速看:仁东控股面临多重压力 投资者索赔案仍在进行中
- []天天快看:股东会见闻录 | 招商蛇口“南油收购”决心
- []建业地产首两月合同销售总额49.9亿元?同比增长57.7%
- []每日快看:古鳌科技:3月3日公司高管陈崇军减持公司股份合计2万股
- []全球快消息!中熔电气:3月3日公司高管贾钧凯减持公司股份合计2800股
- []【世界新要闻】鼎龙股份:3月3日公司高管杨波减持公司股份合计9万股
- []天天动态:龙佰集团:3月3日公司高管张海涛增持公司股份合计100股
- []世界实时:刘小蕙
- []今头条!企业家看两会: 科技、互联网企业家代表委员关注哪些议题?
- []溢多利:公司目前没有工业大麻产品
- []世界关注:“建议上调1万+,请不要再贱卖自己的房子!”多地二手房业主抱团“保卫房价”
- []每日看点!月度新车榜 | 智己、理想等SUV密集推出 小车市场再添新玩家
- []沃尔德:3月3日公司高管陈继锋减持公司股份合计3.18万股
- []全球新资讯:2023年03月06日上市公司公告
- []【全球新视野】杭可科技子公司中标远景动力在英国和法国扩产所采购的锂电池后道设备项目 中标价1.17亿美元(不含税)
- []天天热点评!荣盛发展定增方案获深交所受理?募资金额不超30亿
- B站注册资本增幅400%至5亿 目前由陈睿全资持股
- 光源资本出任独家财务顾问 沐曦集成电路10亿元A轮融资宣告完成
- 巨轮智能2021年上半年营收11.24亿元 期内研发费用投入增长19.05%
- 红枣期货尾盘拉升大涨近6% 目前红枣市场总库存约30万吨
- 嘉银金科发布2021年Q2财报 期内净利润达1.27亿元同比增长208%
- 成都银行2021上半年净利33.89亿元 期内实现营收同比增长17.27亿元
- 汽车之家发布2021年第二季度业绩 期内新能源汽车品牌收入增长238%
- 中信银行上半年实现净利润290.31亿元 期末不良贷款余额706.82亿元
- 光伏概念掀起涨停潮交易价格创新高 全天成交额达1.29亿元
- 上半年生物药大增45% 关键财务指标好转营收账款持续下降
- 环球看点!雅居乐前2月预售额约125.6亿元 同比减少10.92%
- 报道:达安基因:公司主营产品为PCR诊断试剂及相关耗材、仪器等
- 头条焦点:福星股份定增申请获得深交所受理 募资不超过13.4亿元
- 环球简讯:新瀚新材:新产能产品验证及爬坡需要一定的过程,公司会根据市场需求统筹安排产能
- 梦百合:3月6日公司高管王震增持公司股份合计3.84万股
- 修培刻灵“蕉仙素”是非药物疗法与现代生物科技的结晶
- 国美控股所持1639万股中关村股份被司法再冻结?累计冻结占比64.62%
- 绿景中国回购2750万美元2023年到期年息12%票据
- 粗暴的流量时代已经终结,酒店营销难题如何找到最优解?
- 天天快报!财面儿丨中国海外宏洋集团1-2月累计合约销售额78.48亿元 同比上升34%
- * 贝斯曼拟赴美IPO,2022财年净亏损扩大74%至232万美元
- 环球快资讯丨深圳能源:公司按国家政策要求,积极签署并落实煤炭中长期合同,中长期合同覆盖率处行业中上水平
- 天天要闻:财面儿丨金地集团:前2月签约金额240.1亿元
- 今日要闻!德信中国1-2月合约销售额55.4亿?同比增长4.33%
- 财面儿丨保利置业集团:前2月合同销售金额131亿元,同比增长243%
- 观焦点:凯撒文化:公司与沉浸世界除了线下空间合作之外,在VR游戏研发内容方面双方也有探讨
- 环球今热点:快讯 | 科凡定制深主板IPO获受理
- 即时:曹仁贤代表:关于鼓励民营企业参与大型新能源项目开发的建议
- 铅炭电池是新型储能技术,商业化推广前景可期
- CCER炒到106元/吨,会拉动全国碳市场价格上涨吗?
- 动态:2023快速成长,这7个城市的小型论坛必去!
- 电站项目全面转N型|晶科N-TOPCon技术产品成“宠儿” 大幅提升大基地项目高质量发展
- 世界热门:逆天业绩,极其低调却凶猛,被低估的光伏隐形巨头
- 天天通讯!国家发展改革委:大力推进以沙漠、戈壁、荒漠地区为重点的大型风电光伏基地建设
- 全球快播:租个女友回家过年电视剧收视率_租个女友回家过年第2部
- iphone照片回收站在哪
- 世界百事通!安阳钢铁:相关问题请咨询中国矿产资源集团
- 环球观察:新洋丰:公司大股东洋丰集团公司深耕磷化工行业多年,一直积极推进磷矿资源投资和整合
- 世界短讯!盛洋科技:1.公司2019年度非公开发行股票募集资金投资项目之一为“通信铁塔基础设施建设项目
- 全球今日报丨融信中国2月合约销售额约13.34亿元 同比下降超八成
- 江苏海润城发集团30亿元私募债状态更新至“已受理”
- 全球速看:保利置业前2月合同销售额131亿元 同比增长243%
- 今日视点:沃森生物:相关期刊文献属于由研究者发起的临床研究,具体产品持久性及效力数据需要以正式临床研究结果为准
- 豫园股份:控股股东一致行动人新增质押4056.2万股
- 迭代新智感,让此刻更好!ARROW箭牌×设计深圳震撼首展
- 当前热门:珠海华发拟10亿元公司债本息兑付及摘牌 利率3.54%
- 平顶山高新区推介11宗重点出让地块 涵盖3宗商住地共387亩
- 每日速看!江瀚新材:股东查询请联系公司董事会办公室0716-8377806
- 环球热门:佳沃食品:上述传言所述情况不属实,相关事项请以公司公告为准
- 心旷神怡是什么意思?心旷神怡怎么造句?
- 当前关注:南京的各个区的邮政编码是多少?南京的各个区的邮政编码介绍?
- 【新要闻】大众高尔夫和polo有什么区别?大众高尔夫和polo的区别是什么?
- 每日聚焦:电视剧楚乔传中赵西风的扮演者是谁?赵西风的扮演者资料介绍?
- 同程旅行:出境游重启1个月,泰国最火爆
- 微信支付分如何开通?微信支付分的开通方法?
- 梦到死去的奶奶预示着什么?梦到已故的奶奶是好是坏?
- 传奇世界怎么开私服?如何快速开私服?
- 全球讯息:中国核电站有几个都在哪里?核电站是指什么?
- 全球百事通!elle中文叫什么牌子?elle中文品牌介绍?
- 文件粉碎的软件有哪些?360文件粉碎机独立版怎么样?
- 今日热搜:危地马翡翠特点?
- 今年1月港私楼落成量3178伙 一半属于细单位
- 【焦点热闻】3月6日润达医疗涨停分析:幽门螺杆菌概念,体外诊断,医疗器械概念热股
- 天天观热点:3月6日中材节能涨停分析:光热发电,央企改革,储能概念热股
- 平度城建公司完成发行5万中期票据 利率5.5%
- 博汇股份:截至2月28日公司股东人数7734人
- 观焦点:海伦堡物业退出鑫和物业100%股权 由欣科物业接盘
- 美联香港楼价指数按周升0.43%
- 环球今热点:咸阳城投集团10亿元私募债项目更新至"已受理"
- 环球热讯:3月6日奥士康涨停分析:6G,PCB板,小米概念股概念热股
- 全球快讯:朗科智能:截至2022年2月28日,公司股东户数为2.3万户
- 世界报道:当出差成为常态,企业还想要“降本”该怎么办?
- 向内生长 笃定前行 | 青蛙王子2023年度全国经销商峰会
- 天天热议:天玑科技:深圳市杉岩数据技术有限公司系公司全资子公司的参股公司,公司无应披露而未披露信息
- 今日要闻!苹果追踪定位怎么用?几步轻松搞定
- “20君山01”拟分期偿还本金 本期将偿还6亿元本金的20%
- 灰熊做空中通快递全文:中国“一流”物流的***
- 【快播报】美原油交易策略:油价受阻于100日均线,但后市仍偏向多头
- 良信股份:感谢提问。公司始终遵循以客户为中心的战略导向,密切关注客户需求及市场变化
- 全毛衬西服缝制工艺_西服定制中的全毛衬西服是什么意思
- 全球最资讯丨旅游板块震荡走高 西安饮食涨超7%、天目湖涨超5%
- 今日热文:A股消费股异动拉升 人人乐涨停、西安饮食涨超7%
- 全球看热讯:碧桂园服务2022年归母净利润腰斩,股价跌超7%带崩物业板块
- 全球新资讯:和林微纳:公司与歌尔微多维度合作,其中产品以MEMS精微零组件为主
- “19住总03”将于3月12日付息 计息年利率2.97%
- 一个月港元拆息连升2日 见3.06589%
- 微速讯:武汉城建集团9亿元超短期融资券将于3月13日兑付 利率2.39%
- 全球播报:航天彩虹:公司建有民用业务运营团队和部门,尚未设立相关子公司
- 全球关注:中国铁建投资集团6亿元公司债将于3月12日付息 利率3.45%
- 硕贝德:公司已基本完成低轨卫星通信天线的研发
- 长沙放松限售政策调整为“网签满4年即可出售”
- 上海锦江收购卢浮集团八年启示录
- 澳洲旅游局局长旋风访华,急切盼望百万中国游客
- 2023年成体旅融合加速年:海南吉林成体育旅游产业升级典范
- 世界快报:美联:香港2月工商铺注册量录268宗
- 宝湾物流5亿元中票将于3月11日付息 票面利率为3.4%
- 统一企业中国出售合肥16.71万平方米工业地皮 获补偿约5.83亿元
- 天天简讯:重庆江北区:房交会期间购房契税50%补贴 以消费券形式发放
- 实时焦点:浙江自然:公司主要从事充气床垫、户外箱包、头枕坐垫等户外运动用品的研发、设计、生产和销售
- 赞宇科技:公司OPO产品已试车完成,各项生产、卫生许可已经取得,目前处于客户验厂阶段
- 【BT金融分析师】九毛九去年净利润暴跌86.2%,分析师称其从未真正火起来
- 全球速读:"22顺丰泰森SCP005"将于3月14日本息兑付 发行金额5亿元
- 天天快讯:通策医疗:关于公司回购方案计划、进展及已回购资金,请以公司相关公告内容为准
- 【环球快播报】通化金马:公司正在关注股东减持计划实施的进展情况,并按照法律法规的规定及时履行信息披露义务
- 一加Ace 2V 首发主动增强式超级Wi-Fi 独家黑科技降低弱网延迟
- 梅花档案第二部
- 环球简讯:储能240TWh,可再生电力30TW!马斯克“宏图计划3”里的宏伟帝国何时诞生?
- 每日快报!上海哪些板块买房最显示身份和档次?
- 焦点!三大利好支持 军工板块能否起飞?高波动的基金如何驾驭?
- 补血食品有哪些?分别有什么益处?