Это первый раз, когда я пишу многопоточную программу. У меня есть сомнения, что несколько потоков, которые я создаю, будут указывать на один и тот же метод запуска и выполнить задачу, написанную в run(). , но я хочу различные темы для выполнения различных задач, например 1 поток будет вставить в другую базу данных, обновление и т.д. Мой вопрос заключается в том, чтобы создавать различные темы, которые будут выполнять различные задачинесколько потоков, выполняющих разные задачи
ответ
Создайте темы, которые делают различные задания:
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();
вы можете создавать различные классы, реализующие Runnable с различными вакансии - только для начала
Вы можете запустить метод run() с вашими условиями (вставить базу данных, обновить и т. д.). Инициализируя свой класс потоков, передайте аргумент в конструкторе класса, который определит, какую задачу будет выполнять этот поток для вас.
Вы можете использовать внутренний класс для этого. Как ниже
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();
}
}
, используя объект класса, не требуется для внутреннего класса. Но это не остановит вас. –
/* Эта программа создает три разных потока для выполнения трех различных задач. Thread-prints A ... Z, Thread-2 prints 1 ... 100, Thread-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. несколько потоков, выполняющих записи?
- 2. Несколько потоков, выполняющих разные операции в одном скрипте Grinder
- 3. Имея несколько потоков, выполняющих действия на основе глобальной переменной
- 4. Несколько потоков, выполняющих код ЕСЛИ они одного типа
- 5. Разумное количество потоков для пула потоков, выполняющих запросы веб-службы
- 6. объединение журналов для задачи, охватывающей несколько потоков
- 7. Несколько потоков, созданных для одной задачи
- 8. Несколько потоков в JVM
- 9. Распараллеливание задачи, сколько потоков?
- 10. Имейте несколько экземпляров ec2, выполняющих удаленный скрипт
- 11. UIButton выполняет разные задачи
- 12. Несколько соединений и несколько потоков
- 13. Как ограничить число потоков, выполняющих действие в C++ AMP
- 14. Каков наилучший способ ограничить число потоков, выполняющих определенный метод?
- 15. Ограничение количества потоков, выполняющих метод за один раз
- 16. Как иметь разные машины, выполняющие разные задачи?
- 17. несколько потоков, выполняющих опрос() или select() на одном сокете или трубке
- 18. Несколько кнопок и несколько прослушивателей, выполняющих различные операции Java Swing
- 19. Несколько потоков и памяти
- 20. Различное количество потоков, разные ответы
- 21. разные стеки для разных потоков
- 22. OpenThread() через разные номера потоков?
- 23. Как синхронизировать несколько потоков
- 24. Выполняются две разные задачи AsyncTasks
- 25. Циклы в несколько потоков
- 26. Пул потоков, где задачи относительно большие
- 27. ReentrantReadWriteLock несколько потоков для чтения
- 28. newScheduledThreadPool (1) создает несколько потоков
- 29. Несколько потоков и несколько BufferedReaders
- 30. Несколько потоков ждут пакетной работы
и вопрос в том, что такое? –
реализовать 'java.lang.Runnable' –