Что такое поток ?
Поток, это экземпляр класса, который функционирует независимо от других потоков. Т.е. можно делать одновременно несколько задач. Это можно сделать при помощи наследования от класса Thread или при помощи интерфейса Runnable

public class MyRun implements Runnable {	
	@Override
	public void run() {
		for (int i = 0; i < 10; i++) {
			try {
				Thread.sleep(300);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println("-1-");
		}		
	}	
}

Данный класс MyRun имплементится от интерфейса Runnable. Интерфейс Runnable содержит только один метод run, который мы переопределяем(@Override)

Здесь мы просто печатаем в консоль «-1-»
Создадим еще один класс, MyThread:

public class MyThread {

	public static void main(String[] args) throws Exception {	
		Runnable runnable = new MyRun();
		Thread thread = new Thread(runnable);
		thread.start();
	//	thread.run();
		for (int i = 0; i < 20; i++) {
			System.out.println("--------2------");
			Thread.sleep(200);
		}		
	}
	
}	

Команда thread.start() запускает потоки, т.е. у нас будет 2 потока:
первый будет печатать «-1-«, а второй поток будет печатать «———2——»
Вывод на консоль:
———2——
———2——
-1-
———2——
———2——
-1-
———2——
-1-
———2——
———2——
-1-
———2——
-1-
———2——
———2——
-1-
———2——
-1-
———2——
-1-
———2——
———2——
-1-
———2——
———2——
-1-
———2——
———2——
———2——
———2——

Для лучшего отображения, можно классу MyRun добавить конструктор и передавать туда сообщение для печати и сколько секунд необходимо спать:

public class MyRun implements Runnable {
	private String message;
	private int sec;
	MyRun(String message, int sec) {
		this.message = message;
		this.sec = sec;
	}
	@Override
	public void run() {

		for (int i = 0; i < 10; i++) {
			try {
				Thread.sleep(sec);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println(message);
		}
		
	}
	
}

Также в классе MyThread изменить конструкот для MyRun:

public class MyThread {

	public static void main(String[] args) throws Exception {	
		Runnable runnable = new MyRun("-1-", 300);
		Thread thread = new Thread(runnable);
		thread.start();
	//	thread.run();
		for (int i = 0; i < 20; i++) {
			System.out.println("--------2------");
			Thread.sleep(200);
		}		
	}
	
}	

Вывод на консоль аналогичен

Реклама