Хорошие лабораторные по многопоточности (простые, понятные, нетривиальные и полезные в народном хозяйстве) — большая редкость. Предлагаю Вам одно условие и четыре лабораторные работы по элементарной многопоточности на Java.
Условия
Это реализация однопоточного побайтового копировальщика из InputStream в OutputStream. Копирование происходит в потоке вызвавшем метод copy(...)
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class CopyUtil {
public static void copy(InputStream src, OutputStream dst)throws IOException{
try (InputStream src0 = src; OutputStream dst0 = dst) {
int b;
while ((b = src.read()) != -1) {
dst.write(b);
}
}
}
}