Тема: каждая задача называется потоком. Поток не может существовать независимо, он должен быть частью процесса.
Одиночный поток: общие приложения Java являются однопорядными. Например, при запуске программы Helloworld будет запущен процесс JVM, а затем основной метод будет запущен для создания потока. Основной метод также называется основным потоком.
Многопользовательская программа: программа, которая запускает более одного потока одновременно, называется многопоточной программой. Многопользовательский состав может соответствовать цели программистов для написания эффективных программ для достижения цели полного использования ЦП.
Пример однопоточного кода:
открытый класс SingleThread {public static void main (string [] args) {Thread Think = Thread.CurrentThread (); // Получить в данный момент в данный момент запущенные потоки потока. STECTNAME («Одиночный поток»); // Переименовать Thread.out.println (thread.getName ()+"running"); for (int i = 0; i <10; i ++) {System.out.println («Поток спят:»+i); try {thread.sleep (1000); // Поток спит, задерживается на одну секунду} catch (прерывание Exception e) {// todo автоматически сгенерированное catch blocke.printstacktrace (); System.out.println ("Ошибка потока");}}}}}}}}}}}}}}Пример многопоточного кода:
Примечание. Существует два способа реализации многопоточного чтения, один состоит в том, чтобы наследовать класс потоков, а другой - реализовать запускаемый интерфейс.
Унаследование класса потоков для реализации многопоточного
public Class TestThread {public static void main (string [] args) {Thread T1 = new ExtendThread ("T1", 1000); // Создание потока, используя объект подъема, и построить имя потока и потоковое время сна T2 = New ExtendThread ("T2", 2000); Потока T3 = New ExtendThread ("T3", 3000); t1.start (); // запустить поток и вызовать метод запуска t2.start (); t3.start ();}} класс extendThread extends Thread {// Унаследовать поток поток имени this.time = time;} public void run () {// переписать метод запуска класса потока try {sleep (time); // Все потоки добавляют Sleep} catch (urrupteDexceptione) {e.printstacktrace (); System.out.println ("Исключение прерывания потока");} System.out.println ("Имя:"+name+", поток спит:"+time+"msec"); }}Многопользовательский интерфейс с многопоточным чтением
public class RunnableThread {public static void main (string [] args) {Runnable r1 = new Implrunnable ("r1", 1000); // Запустить интерфейс должен полагаться на класс потока для создания потока потока T1 = новый поток (R1); // runnable не может вызвать метод start (), потому что это не поток, поэтому вам необходимо использовать класс потока, чтобы добавить потоки, выполняемые R2 = New Prevrunnable ("R2", 2000); потока T2 = новый поток (R2); Runnable R3 = new Prevrunnable ("R3", 3000); Thread T3 = New (R3); T1.Start ("R3", 3000); Thread T3 = New (R3); T1.Start ("R3", 3000); Thread T3 = New (R3); T1.Start ("R3", 3000); Thread T3 = New (R3); // запустить поток и вызовите метод выполнения T2.Start (); T3.start ();}} класс Implrunnable реализует runnable {// Унаследование runnable interface string name; int time; public uprunnable (string name, int time) {// Создание имени потока и время Sleep this.name = name = this. try {thread.sleep (время); // Все потоки добавляют Sleep} catch (прерывание Exception e) {e.printStackTrace (); System.out.println ("Исключение прерывания потока");} System.out.println ("name:"+name+", поток спит:"+time+"ms");};ПРИМЕЧАНИЕ. Класс потоков на самом деле является классом, который реализует запускаемый интерфейс.
Преимущества реализации выполняемых интерфейсов по сравнению с наследственными классами потоков