
实现过程
- 自己描述一个类
- 继承父类Thread
- 重写run方法
- new一个线程对象,调用start方法,让线程进入就绪状态 ```java package test;
public class Person extends Thread { private String n;
public Person(String name) {this.n = name;}public void run() {for (int i = 0; i < 100; i++) {System.out.println(this.n + "跑了" + i + "米");}}public static void main(String[] args) {Person perons1 = new Person("a");Person perons2 = new Person("b");Person perons3 = new Person("c");perons1.start();perons2.start();perons3.start();}
}
第二种线程对象的写法<br />使用实现```javapackage test;public class Person implements Runnable {private String n;public Person(String name) {this.n = name;}public void run() {for (int i = 0; i < 100; i++) {System.out.println(this.n + "跑了" + i + "米");}}public static void main(String[] args) {Person perons1 = new Person("a");Person perons2 = new Person("b");Person perons3 = new Person("c");new Thread(perons1).start();new Thread(perons2).start();new Thread(perons3).start();}}
synchronized
锁定的是对象
public class Test{public synchronized void get() { // 可以写在这里}public void get() {int a = 1;synchronized(对象){ // 可以写在这里}}}
wait
锁定的是线程
public class Test {public void get(){this.wait();}}加入有个Test1类对象调用了Test的get方法,锁定的是Test1的线程
notify/notifyAll 唤醒线程
join
合并线程——可以传参数
package test;public class Person extends Thread {private String n;public Person(String name) {this.n = name;}public void run() {Pig p = new Pig();try {p.join(); // Pig线程加入Person线程} catch (InterruptedException e) {e.printStackTrace();}}}
Timer
有计时器的功能
