/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//继承Thread类
new Thread() { //1,new 类(){}继承这个类
public void run() { //2,重写run方法
for(int i = 0; i < 3000; i++) { //3,将要执行的代码,写在run方法中
System.out.println("aaaaaa");
}
}
}.start(); //4,开启线程
//实现Runnable接口
new Thread(new Runnable(){ //1,new类(new接口()){}实现这个接口
@Override
public void run() { //2,重写run方法
for(int i = 0; i < 3000; i++) { //3,将要执行的代码,写在run方法中
System.out.println("bb");
}
}
}).start(); //4,开启线程
}
}
多线程获取名字和设置名字
public class e {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Thread() { //默认名字Thread-0, ...1 2 3....
public void run() {
System.out.println(this.getName() + "....aa");
}
}.start();
new Thread("hello") {//通过构造方法给name赋值
public void run() {
System.out.println(this.getName() + "....bb");
this.setName("java");
System.out.println(this.getName() + "....cc");
}
}.start();
Thread t1 = new Thread() {
public void run() {
System.out.println(this.getName() + "....ee");
}
};
Thread t2 = new Thread() {
public void run() {
this.setName("李四");
System.out.println(this.getName() + "....ff");
}
};
t1.setName("张三");
t1.start();
t2.start();
}
}
public static Thread currentThread()
返回对当前正在执行的线程对象的引用。
public class f {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Thread() {
public void run() {
System.out.println(getName() + "....aaa");
}
}.start();
new Thread(new Runnable() {
public void run() {
//Thread.currentThread()获取当前正在执行的线程
System.out.println(Thread.currentThread().getName() + "...bbb");
}
}).start();
/**
* 需求:铁路售票,一共100张,通过四个窗口卖完.
* 通过四个线程出售
*/
public static void main(String[] args) {
new Ticket().start();
new Ticket().start();
new Ticket().start();
new Ticket().start();
}
}
class Ticket extends Thread {
private static int ticket = 100;//加static,所有对象共享这100张票
//private Object obj = new Object();//相当于成员变量,前加static才能做锁对象
//private static Object obj = new Object(); //如果用引用数据类型成员变量当作锁对象,必须是静态的
public void run() {
while(true) {
synchronized(Ticket.class) {//加this不行,每new一次都是一个新的对象新的锁
if(ticket <= 0) {
break;
}
/**
* @param args
* 火车站卖票的例子用实现Runnable接口
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyTicket mt = new MyTicket();
new Thread(mt).start();
new Thread(mt).start();
new Thread(mt).start();
new Thread(mt).start();