java線程參數
⑴ java runnable線程如何傳參
Runnable裡面沒有傳參函數,所以得自己造一個
0.自定義一個介面,繼承Runnable,新增一個傳參方法
{
publicMyRunnablesetParam(String...param);
}
實現這個自定義介面
MyRunnablesendMessage=newMyRunnable(){
Stringmessage;
@Override
publicMyRunnablesetParam(String...param){
message=param[0];
returnthis;
}
@Override
publicvoidrun(){
sendMessage(message);
}
};
2.初始化線程池,運行Runnable
=Executors.newCachedThreadPool();
cachedThreadPool.execute(sendMessage.setParam("Iamservice"));
如上所示,線程池調用的一個runnable實例,這個runnable實例傳入了一個字元串參數
⑵ Java線程池幾個參數
corePollSize:核心線程數。
maximumPoolSize:最大線程數。
keepAliveTime:空閑的線程保留的時間。
TimeUnit:空閑線程的保留時間單位。
BlockingQueue<Runnable>:阻塞隊列,存儲等待執行的任務。
ThreadFactory:線程工廠,用來創建線程。
RejectedExecutionHandler:隊列已滿,而且任務量大於最大線程的異常處理策略。
⑶ JAVA傳參的問題 如何讓多個線程可以調用一個參數
methodA() 要變成 methodA(object xxx) { int i = (int)xxx; } Thread的委託有2個重載,一個是不帶參數,另一個是帶object參數,你還可以: methodA(object xxx) { objecct[] xx = (objecct[])xxx;// 這樣是傳遞多個參數 }
⑷ java中如何給Runnable線程傳參
Java中給Runnable線程傳參數的方式如下:
向線程中傳遞數據的三種方法:
一、通過構造函數傳遞參數
{
privateStringname;
publicMyThread1(Stringname)
{
this.name=name;
}
publicvoidrun()
{
System.out.println("hello"+name);
}
publicstaticvoidmain(String[]args)
{
Threadthread=newMyThread1("world");
thread.start();
}
}
二、通過變數和方法傳遞數據
{
privateStringname;
publicvoidsetName(Stringname)
{
this.name=name;
}
publicvoidrun()
{
System.out.println("hello"+name);
}
publicstaticvoidmain(String[]args)
{
MyThread2myThread=newMyThread2();
myThread.setName("world");
Threadthread=newThread(myThread);
thread.start();
}
}
三、通過回調函數傳遞數據
classData
{
publicintvalue=0;
}
classWork
{
publicvoidprocess(Datadata,Integernumbers)
{
for(intn:numbers)
{
data.value+=n;
}
}
}
{
privateWorkwork;
publicMyThread3(Workwork)
{
this.work=work;
}
publicvoidrun()
{
java.util.Randomrandom=newjava.util.Random();
Datadata=newData();
intn1=random.nextInt(1000);
intn2=random.nextInt(2000);
intn3=random.nextInt(3000);
work.process(data,n1,n2,n3);//使用回調函數
System.out.println(String.valueOf(n1)+"+"+String.valueOf(n2)+"+"
+String.valueOf(n3)+"="+data.value);
}
publicstaticvoidmain(String[]args)
{
Threadthread=newMyThread3(newWork());
thread.start();
}
}
⑸ java中多線程常見的幾個參數
java中多線程常見的幾個參數
sleep:在指定的毫秒數內讓當前正在執行的線程休眠(暫停執行).
此操作受到系統計時器和調度程序精度和准確性的影響。
該線程不丟失任何監視器的所屬權。
調用sleep的時候鎖並沒有被釋放。
休眠
Java SE5引入了更加顯示的sleep()作為TimeUnit類的一部分,這個方法允許你指定sleep()延遲的時間單元,因此可以提供更好的可閱讀性。
wait:調用wait使線程掛起,直到線程得到了notify或notifyAll消息,線程才會進入就緒狀態。
使你可以等待某個條件發生變化,而改變這個條件超出了當前方法的控制能力。
線程的執行被掛起,對象上的鎖被釋放。意味著另一個任務可以獲得這個鎖。
因此在該對象中的其他synchronized方法可以在wait期間被調用。
yield:相當於:我的工作已經做的差不多了,可以讓給別的線程使用CPU了。
當調用yield時,你也是在建議具有相同優先順序的其他線程可以運行。
對於任何重要的控制或在調整應用時,都不能依賴於yield。
yield並不意味著退出和暫停,只是,告訴線程調度如果有人需要,可以先拿去,我過會再執行,沒人需要,我繼續執行
調用yield的時候鎖並沒有被釋放。
interrupt:中斷線程。
Thread類包含interrupt()方法,因此你可以中止被阻塞的任務。
這個方法將設置線程的中斷狀態。
如果一個線程已經被阻塞,或者試圖執行一個阻塞操作,那麼設置這個線程的中斷狀態將拋出InterruptedException。
當拋出該異常或者該任何調用Thread.interrupted()時,中斷狀態將復位。
你在Executor上調用shutdownNow(),那麼它將發送一個interrupt()調用給他啟動的所有線程。
⑹ java 線程傳遞參數
線程對象A用的方法中建立進程對象B的飲用,之後直接調用B的成員變數,這一成員變數可以在B中通過方法修改,這樣應該可以吧。
⑺ JAVA多線程的時候 2個線程同時使用一個參數 怎麼讓他們各用個的
把公共的這個變數也放到線程的run方法裡面定義就行了,不明白可以把詳細代碼貼上上,幫你加
⑻ Java中線程Thread有沒有帶參數的run方法呀
沒有,線程中沒有帶參數的run方法。
如果想要實現帶參數的run方法:
1、定義線程內變數內
2、在繼承thread的時候,增容加帶參數的構造函數,初始化線程內變數
3、在run方法操作線程內變數,以達到類似傳參的效果。
示例:
classMyThreadextendsThread{
inta=0;//定義線程內變數
publicMyThread(inta){//定義帶參數的構造函數,達到初始化線程內變數的值
this.a=a;
}
@Override
publicvoidrun(){
this.a++;//線程內變數自增
}
}
⑼ java線程傳入參數要怎麼理解
這樣傳入的店員變數是同一個對象,不然生產者消費者里都自己new的話 不是一個店員無法根據櫃台商品數去判斷是否等待或喚醒
⑽ java線程裡面Thread thread=new Thread(file,"aaa"),這裡面第二個參數什麼意思啊
線程名稱,這個可以自定義,如果不寫的話現正也會自己定義一個名字(thread-1),你也可以在run方法里使用thread.getName()來查看。