你先用C++寫,然后做成DLL。
專注于為中小企業(yè)提供做網(wǎng)站、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)和靜免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千多家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
再用java去調(diào)就好了。
一般java做底層控制和調(diào)用都會(huì)這么做。
就像io什么的,都是去調(diào)用C的代碼完成的
一般java調(diào)用c寫的dll代碼都比較方便。
c調(diào)用java的代碼幾乎不可能。
java中,每個(gè)線程都需經(jīng)歷新生、就緒、運(yùn)行、阻塞和死亡五種狀態(tài),線程從新生到死亡的狀態(tài)變化稱為生命周期。
用new運(yùn)算符和Thread類或其子類建立一個(gè)線程對(duì)象后,該線程就處于新生狀態(tài)。
線程的生命周期,把圖轉(zhuǎn)化為文字就是:?
1、線程通過new方法創(chuàng)建,調(diào)用start,線程進(jìn)入就緒狀態(tài),等待系統(tǒng)的調(diào)度(時(shí)間片輪轉(zhuǎn)調(diào)度)。當(dāng)系統(tǒng)調(diào)度,進(jìn)入運(yùn)行狀態(tài)。正常結(jié)束或者異常退出,進(jìn)程進(jìn)入死亡狀態(tài)。
2、處于運(yùn)行狀態(tài)的線程若遇到sleep,則線程進(jìn)入睡眠狀態(tài),不會(huì)讓出資源鎖,sleep結(jié)束,線程轉(zhuǎn)為就緒狀態(tài),等待系統(tǒng)重新調(diào)度。
3、處于運(yùn)行狀態(tài)的線程可能在等待io,也可能進(jìn)入掛起狀態(tài)。io完成,轉(zhuǎn)為就緒狀態(tài)。
4、處于運(yùn)行狀態(tài)的線程yield,線程轉(zhuǎn)為就緒狀態(tài)。(yield只讓給權(quán)限比自己高的)
5、處于運(yùn)行狀態(tài)的線程遇到wait,線程處于等待狀態(tài),需要notify()/notifyALL來喚醒線程,喚醒后的線程處于鎖定狀態(tài),獲取了“同步鎖”,之后,線程才轉(zhuǎn)為就緒狀態(tài)。處于運(yùn)行的線程synchronized,加上后 變成同步操作。處于鎖定狀態(tài),獲取了“同步鎖”,之后,線程才轉(zhuǎn)為就緒狀態(tài)。
import java.util.TimerTask;public class HeartBeatTask extends TimerTask {private int timerInterval;public HeartBeatTask(int timeInterval){this.timerInterval=timeInterval;}public void run() {// 在這里添加你需要周期性運(yùn)行的代碼System.out.println("Welcome");}public static void main(String[] args ){java.util.Timer t1 = new java.util.Timer();HeartBeatTask tt = new HeartBeatTask(3000);t1.schedule(tt, 0, 3000);}}TimerTask protected TimerTask() 創(chuàng)建一個(gè)新的計(jì)時(shí)器任務(wù)。run public abstract void run() 此計(jì)時(shí)器任務(wù)要執(zhí)行的操作。 public class TimerextendsObject一種工具,線程用其安排以后在后臺(tái)線程中執(zhí)行的任務(wù)??砂才湃蝿?wù)執(zhí)行一次,或者定期重復(fù)執(zhí)行。與每個(gè) Timer 對(duì)象相對(duì)應(yīng)的是單個(gè)后臺(tái)線程,用于順序地執(zhí)行所有計(jì)時(shí)器任務(wù)。計(jì)時(shí)器任務(wù)應(yīng)該迅速完成。如果完成某個(gè)計(jì)時(shí)器任務(wù)的時(shí)間太長(zhǎng),那么它會(huì)“獨(dú)占”計(jì)時(shí)器的任務(wù)執(zhí)行線程。因此,這就可能延遲后續(xù)任務(wù)的執(zhí)行,而這些任務(wù)就可能“堆在一起”,并且在上述不友好的任務(wù)最終完成時(shí)才能夠被快速連續(xù)地執(zhí)行。對(duì)Timer 對(duì)象最后的引用完成后,并且 所有未處理的任務(wù)都已執(zhí)行完成后,計(jì)時(shí)器的任務(wù)執(zhí)行線程會(huì)正常終止(并且成為垃圾回收的對(duì)象)。但是這可能要很長(zhǎng)時(shí)間后才發(fā)生。默認(rèn)情況下,任務(wù)執(zhí)行線程并不作為守護(hù)線程 來運(yùn)行,所以它能夠阻止應(yīng)用程序終止。如果調(diào)用者想要快速終止計(jì)時(shí)器的任務(wù)執(zhí)行線程,那么調(diào)用者應(yīng)該調(diào)用計(jì)時(shí)器的 cancel 方法。如果意外終止了計(jì)時(shí)器的任務(wù)執(zhí)行線程,例如調(diào)用了它的 stop 方法,那么所有以后對(duì)該計(jì)時(shí)器安排任務(wù)的嘗試都將導(dǎo)致 IllegalStateException,就好像調(diào)用了計(jì)時(shí)器的 cancel 方法一樣。此類是線程安全的:多個(gè)線程可以共享單個(gè) Timer 對(duì)象而無需進(jìn)行外部同步。此類不 提供實(shí)時(shí)保證:它使用 Object.wait(long) 方法來安排任務(wù)。 實(shí)現(xiàn)注意事項(xiàng):此類可擴(kuò)展到大量同時(shí)安排的任務(wù)(存在數(shù)千個(gè)都沒有問題)。在內(nèi)部,它使用二進(jìn)制堆來表示其任務(wù)隊(duì)列,所以安排任務(wù)的開銷是 O(log n),其中 n 是同時(shí)安排的任務(wù)數(shù)。實(shí)現(xiàn)注意事項(xiàng):所有構(gòu)造方法都啟動(dòng)計(jì)時(shí)器線程。Timer public Timer() 創(chuàng)建一個(gè)新計(jì)時(shí)器。 schedule public void schedule(TimerTask task, long delay, long period) 安排指定的任務(wù)從指定的延遲后開始進(jìn)行重復(fù)的固定延遲執(zhí)行。以近似固定的時(shí)間間隔(由指定的周期分隔)進(jìn)行后續(xù)執(zhí)行。
在固定延遲執(zhí)行中,根據(jù)前一次執(zhí)行的實(shí)際執(zhí)行時(shí)間來安排每次執(zhí)行。如果由于任何原因(如垃圾回收或其他后臺(tái)活動(dòng))而延遲了某次執(zhí)行,則后續(xù)執(zhí)行也將被延遲。從長(zhǎng)期來看,執(zhí)行的頻率一般要稍慢于指定周期的倒數(shù)(假定 Object.wait(long) 所依靠的系統(tǒng)時(shí)鐘是準(zhǔn)確的)。 固定延遲執(zhí)行適用于那些需要“平穩(wěn)”運(yùn)行的重復(fù)活動(dòng)。換句話說,它適用于在短期運(yùn)行中保持頻率準(zhǔn)確要比在長(zhǎng)期運(yùn)行中更為重要的活動(dòng)。這包括大多數(shù)動(dòng)畫任務(wù),如以固定時(shí)間間隔閃爍的光標(biāo)。這還包括為響應(yīng)人類活動(dòng)所執(zhí)行的固定活動(dòng),如在按住鍵時(shí)自動(dòng)重復(fù)輸入字符。 參數(shù):task - 所要安排的任務(wù)。delay - 執(zhí)行任務(wù)前的延遲時(shí)間,單位是毫秒。period - 執(zhí)行各后續(xù)任務(wù)之間的時(shí)間間隔,單位是毫秒。拋出:IllegalArgumentException - 如果 delay 是負(fù)數(shù),或者 delay + System.currentTimeMillis() 是負(fù)數(shù)。IllegalStateException - 如果已經(jīng)安排或取消了任務(wù),已經(jīng)取消了計(jì)時(shí)器,或者計(jì)時(shí)器線程已終止。 public void schedule(TimerTask task, Date firstTime, long period) 安排指定的任務(wù)在指定的時(shí)間開始進(jìn)行重復(fù)的固定延遲執(zhí)行。以近似固定的時(shí)間間隔(由指定的周期分隔)進(jìn)行后續(xù)執(zhí)行。
在固定延遲執(zhí)行中,根據(jù)前一次執(zhí)行的實(shí)際執(zhí)行時(shí)間來安排每次執(zhí)行。如果由于任何原因(如垃圾回收或其他后臺(tái)活動(dòng))而延遲了某次執(zhí)行,則后續(xù)執(zhí)行也將被延遲。在長(zhǎng)期運(yùn)行中,執(zhí)行的頻率一般要稍慢于指定周期的倒數(shù)(假定 Object.wait(long) 所依靠的系統(tǒng)時(shí)鐘是準(zhǔn)確的)。 固定延遲執(zhí)行適用于那些需要“平穩(wěn)”運(yùn)行的重復(fù)執(zhí)行活動(dòng)。換句話說,它適用于在短期運(yùn)行中保持頻率準(zhǔn)確要比在長(zhǎng)期運(yùn)行中更為重要的活動(dòng)。這包括大多數(shù)動(dòng)畫任務(wù),如以固定時(shí)間間隔閃爍的光標(biāo)。這還包括為響應(yīng)人類活動(dòng)所執(zhí)行的固定活動(dòng),如在按住鍵時(shí)自動(dòng)重復(fù)輸入字符。 參數(shù):task - 所要安排的任務(wù)。firstTime - 首次執(zhí)行任務(wù)的時(shí)間。period - 執(zhí)行各后續(xù)任務(wù)之間的時(shí)間間隔,單位是毫秒。拋出:IllegalArgumentException - 如果 time.getTime() 是負(fù)數(shù)。