1.三个售票窗口同时出售20张票
public static void main(String[] args)
TicketOffice ticketOffice = new TicketOffice(new Object(), 20);
new Thread(ticketOffice, "窗口1").start();
new Thread(ticketOffice, "窗口2").start();
new Thread(ticketOffice, "窗口3").start();
class TicketOffice implements Runnable
public TicketOffice(java.lang.Object object, int ticketNum)
this.ticketNum = ticketNum;
System.out.println(Thread.currentThread().getName() + "没有票了");
System.out.println(Thread.currentThread().getName() + "卖出了一张票,剩余" + --ticketNum + "张票");
catch (InterruptedException e)
2.创建两个线程,其中一个输出1-52,另外一个输出A-Z。输出格式要求:12A 34B 56C 78D ...
public static void main(String[] args)
Object object = new Object();
new Thread(new Number(object)).start();
new Thread(new Character(object)).start();
class Number implements Runnable
public Number(Object object)
for (int i = 1; i < 53; i++)
catch (InterruptedException e)
class Character implements Runnable
public Character(Object object)
for (char i = 'A'; i <= 'Z'; i++)
catch (InterruptedException e)
3.
启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程1打印16,17,18,19,20….以此类推, 直到打印到75. 程序的输出结果应该为:
线程1: 1
线程1: 2
线程1: 3
线程1: 4
线程1: 5
线程2: 6
线程2: 7
线程2: 8
线程2: 9
线程2: 10
…
线程3: 71
线程3: 72
线程3: 73
线程3: 74
线程3: 75
public static void main(String[] args)
Object object = new Object();
new Thread(new PrintRunnable(object,1)).start();
new Thread(new PrintRunnable(object,2)).start();
new Thread(new PrintRunnable(object,3)).start();
class PrintRunnable implements Runnable
private static volatile int printNum = 0;
public PrintRunnable(Object object, int threadId)
this.threadId = threadId;
if (printNum / 5 % 3 + 1 == threadId)
for (int i = 0; i < 5; i++)
System.out.println("线程" + threadId + ":" + (++printNum));
catch (InterruptedException e)
原文地址https://blog.csdn.net/xixiangdeshaonian/article/details/82228492