1、多线程
代码:MyThread.java
class Thread_dd extends Thread
{
private String name;
Thread_dd(String name)
{
this.name = name;
}
public void run()
{
int y;
for(y = 0; y < 5; y++)
System.out.println(name + "thread--" + y);
}
}
class MyThread
{
public static void main(String[] args)
{
Thread_dd t = new Thread_dd("One");
t.start(); //开启线程并执行该线程的run方法 (面试经常考这两个运行得啥子)
//t.run(); //仅仅是对象调用方法。而线程创建了,并没有运行
for(int x = 0; x < 5; x++)
System.out.println("Hello World----" + x);
Thread_dd t1 = new Thread_dd("Two");
t1.start();
}
}
代码:MyTicket.java
/*
简单卖票程序
*/
class Ticket implements Runnable
{
private int ticket = 10;
public void run()
{
for(; ticket > 0; ticket--) //为什么用for循环,每个线程都会去取一次10呢?难道ticket--是在输出语句之后执行的?
System.out.println(Thread.currentThread().getName() + "...sale:" + ticket); //Tread.可以不要
/*
while(true)
{
if(ticket > 0)
{
System.out.println(Thread.currentThread().getName() + "...saled" + ticket--);
}
}*/
}
}
class MyTicket
{
public static void main(String[] args)
{
Ticket t = new Ticket();
new Thread(t).start(); //Thread-0
Thread t2 = new Thread(t);
Thread t3 = new Thread(t);
Thread t4 = new Thread(t);
Thread t5 = new Thread(t);
t2.start();
t3.start();
t4.start();
t5.start();
}
}
synchronized(obj)
{
for(; ticket > 0; ticket--) //为什么用for循环,每个线程都会去取一次10呢?难道ticket--是在输出语句之后执行的?
System.out.println(Thread.currentThread().getName() + "...sale:" + ticket);
}
//同步代码块解决了for循环的问题。