這是我第一次寫多線程程序。 我懷疑我創建的多個線程將指向相同的運行方法並執行run()中寫入的任務。 但我想不同的線程來執行不同的任務 如1線程插入到數據庫中其他更新等 我的問題是如何創造不同的線程將執行不同的任務多線程執行不同任務
2
A
回答
3
創建線程做不同的工作:
public class Job1Thread extends Thread {
@Override
public void run() {
// Do job 1 here
}
}
public class Job2Thread extends Thread {
@Override
public void run() {
// Do job 2 here
}
}
啓動線程,他們會爲你工作:
Job1Thread job1 = new Job1Thread();
Job2Thread job2 = new Job2Thread();
job1.start();
job2.start();
2
您可以創建實現Runnable不同的不同類別作業 - 僅用於開始
2
您可以根據您的條件(插入數據庫,更新等)運行run()方法。在初始化線程類時,在類構造函數中傳遞參數,該參數將定義此線程將爲您執行的任務。
0
您可以使用內部類此。如下所示
class first implements Runnable
{
public void run(){
System.out.println("hello by tobj");
}
public static void main(String args[]){
first obj=new first();
Thread tobj =new Thread(obj);
tobj.start();
Thread t2 =new Thread(obj)
{
public void run()
{
System.out.println("hello by t2");
}
};
Thread t = new Thread(obj)
{
public void run()
{
System.out.println("hello by t");
}
};
t.start();
t2.start();
}
}
+0
使用類的對象不是內部類所必需的,但它不會阻止你這樣做。 –
1
/*該程序創建三個不同的線程來執行三個不同的任務。線程-1打印A ... Z,線程2打印1 ... 100,線程3打印100-200。用於理解多線程的非常基本的程序,而不爲不同任務創建不同的類別*/
class ThreadingClass implements Runnable {
private Thread t;
private String threadName;
ThreadingClass(String name) {
threadName = name;
System.out.println("Creating " + threadName);
}
public void run() {
System.out.println("Running " + threadName);
if(threadName == "Thread-1"){
this.printAlpha();
}
else if(threadName == "Thread-2"){
this.printOneToHundred();
}
else{
this.printHundredMore();
}
}
public void printAlpha(){
for(int i=65; i<=90; i++)
{
char x = (char)i;
System.out.println("RunnableDemo: " + threadName + ", " + x);
}
}
public void printOneToHundred(){
for(int i=1; i<=100; i++)
{
System.out.println("RunnableDemo: " + threadName + ", " + i);
}
}
public void printHundredMore(){
for(int i=100; i<=200; i++)
{
System.out.println("RunnableDemo: " + threadName + ", " + i);
}
}
public void start() {
System.out.println("Starting " + threadName);
if (t == null) {
t = new Thread (this);
t.start();
t.setName(threadName);
}
}
}
public class MultiTasking {
public static void main(String args[]) {
ThreadingClass R1 = new ThreadingClass ("Thread-1");
ThreadingClass R2 = new ThreadingClass ("Thread-2");
ThreadingClass R3 = new ThreadingClass ("Thread-3");
R1.start();
R2.start();
R3.start();
}
}
相關問題
- 1. 如何讓不同的OpenMP線程執行不同的任務
- 2. 線程任務不在IIS中執行
- 3. 正確使用JavaFX任務執行多線程和線程池
- 4. 多線程同步執行
- 5. 在不同線程中運行任務
- 6. 在iOS中的不同線程上執行後臺任務
- 7. 細粒度多線程 - 工作任務應該執行多少?
- 8. 使Spring任務與任務執行器線程一起運行
- 9. Java線程任務的併發執行
- 10. 在UI線程上執行長任務
- 11. 在另一個線程執行任務
- 12. 執行任務時聽線程
- 13. 在多線程環境中並行執行每個子任務
- 14. 執行相同任務的多個JButton
- 15. 同步執行多個任務
- 16. 多線程任務
- 17. 用於執行具有不同優先級的任意任務的線程池
- 18. 設計多線程程序通常會更好嗎每個線程執行一系列任務還是執行多個任務的線程組?
- 19. 創建X線程,同時執行一個任務
- 20. 多線程和多任務
- 21. 線程安全傳遞整數到任務執行任務
- 22. OpenMP任務 - 阻止特定線程執行任務的方式?
- 23. 使用任務在多線程C#中執行異常跟蹤
- 24. 使用一個線程多次執行特定任務C#
- 25. 任務繼續執行多個任務
- 26. 同步grunt.js任務執行
- 27. 執行多個線程同時
- 28. 不同的執行任務的方式
- 29. 執行者服務多線程
- 30. 暫停線程,而另一個線程正在執行任務
問題是? –
實現'java.lang.Runnable' –