速讀:程序、進程和線程——多線程的創建方法
目錄
【資料圖】
程序、進程和線程的概念
多線程的優點
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億元
- []視焦點訊!改善居?。翰槐刭I,租也行!
- []沈曉玲等:多地鼓勵現房銷售試點,房企如何調整應對?
- []焦點信息:全國政協委員戴斌:旅游需要網紅,但網紅不是旅游的全部
- []真蘭儀表:公司生產的氣體流量計是一種精密計量器具,主要用于天然氣的貿易計量與結算,其準確度達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”里的宏偉帝國何時誕生?
- 每日快報!上海哪些板塊買房最顯示身份和檔次?
- 焦點!三大利好支持 軍工板塊能否起飛?高波動的基金如何駕馭?
- 補血食品有哪些?分別有什么益處?