一(1)、FirstThread.java:
public class FirstThread extends Thread{
public void run(){
for(int i = 0;i < 100;i++){
System.out.println("FirstThread-->"+i);
}
}
}
二(1)、Test.java:
public class Test{
public static void main(String args[]){
FirstThread ft = new FirstThread();
ft.start();
for(int i = 0;i < 100;i++){
System.out.println("main-->" + i);
}
}
}
三(2)、MyThread.java:
class MyThread implements Runnable{
private int i = 100;
public void run(){
while(true){
synchronized(this){
System.out.println(Thread.currentThread().getName() + i);
i--;
Thread.yield();
if(i < 0){
break;
}
}
}
}
}
四(2)、Test1.java:
public class Test1{
public static void main(String args[]){
MyThread myThread = new MyThread();
Thread t1 = new Thread(myThread);
Thread t2 = new Thread(myThread);
t1.setName("线程a");
t2.setName("线程b");
t1.start();
t2.start();
}
}
五(3)、Test2.java:
public class Test2{
public static void main(String args []){
new Thread(new Runnable(){
public void run(){
for(int i = 0;i < 100;i++){
System.out.println("FirstThread-->"+i);
}
}
}).start();
}
}
六(4)、Test.java
public class Test{
public static void main(String args[]){
new Thread(){
public void run(){
for(int i = 0;i < 100;i++){
System.out.println("FirstThread-->"+i);
}
}
}.start();
for(int i = 0;i < 100;i++){
System.out.println("main-->" + i);
}
}
}
七、详解:
1、一种是继承Thread的类,一种是实现Runnable接口,前一种因为是继承不太推荐,第二种是接口方式值得推荐。第二种方式多个线程共享数据,第一种多个线程各有各的数据。用synchronized()可以同步各个线程的数据。
2、匿名内部类如Test2.java所示。
3、泛型暂时知道<T> <K><V> <? extend Number>即可。