class Ticket1 implements Runnable {
private int tickets =
10;
@Override
public void run() {
while (
true) {
saleTicket();
if (tickets <=
0) {
break;
}
}
}
private synchronized
void saleTicket() {
if (tickets >
0) {
try {
Thread.sleep(
10);
}
catch (InterruptedException ex) {
Logger.getLogger(Ticket1.class.getName()).log(Level.SEVERE,
null, ex);
}
System.out.println(Thread.currentThread().getName() +
"---卖出的票" + tickets--);
}
}
}
public class Test3 {
public static void main(String[] args) {
Ticket1 ticket =
new Ticket1();
new Thread(ticket,
"线程一").start();
new Thread(ticket,
"线程二").start();
new Thread(ticket,
"线程三").start();
new Thread(ticket,
"线程四").start();
}
}
class Ticket implements Runnable {
private int tickets =
1000;
Object lock =
new Object();
public void run() {
while (
true) {
synchronized (lock) {
try {
Thread.sleep(
10);
}
catch (InterruptedException ex) {
Logger.getLogger(Ticket.class.getName()).log(Level.SEVERE,
null, ex);
}
if (tickets >
0) {
System.out.println(Thread.currentThread().getName() +
"--卖出的票" + tickets--);
}
else {
break;
}
}
}
}
}
public class Test2 {
public static void main(String[] args) {
Ticket ticket=
new Ticket();
new Thread(ticket,
"线程一").start();
new Thread(ticket,
"线程二").start();
new Thread(ticket,
"线程三").start();
new Thread(ticket,
"线程四").start();
}
}
class Thread1 implements Runnable {
@Override
public void run() {
for (
int i =
1; i <
6; i++) {
System.out.println(Thread.currentThread().getName() +
"输入:" + i);
try {
Thread.sleep(
500);
}
catch (InterruptedException ex) {
Logger.getLogger(Thread1.class.getName()).log(Level.SEVERE,
null, ex);
}
}
}
}
public class Test4 {
public static void main(String[] args) throws Exception {
Thread t =
new Thread(
new Thread1(),
"线程一");
t.start();
for (
int i =
1; i <
6; i++) {
System.out.println(Thread.currentThread().getName() +
"输入:" + i);
if (i ==
2) {
t.join();
}
Thread.sleep(
500);
}
}
}