有没有yield()、sleep()、wait()、join()、run和start区别代码实例代码案例 找不到 可以运行的 不要 文档
这是我做练习的时候写的代码,你可以参考下,
/**
*run(),start(),join(),sleep(),yield();练习
*/
public class ThreadTest {
private int i=0;
private Object o = new Object();
static class Mythread extends Thread{
public void run() {
System.out.println("0当前线程ID:"+Thread.currentThread().getId());
}
}
static class Mythread1 implements Runnable{
public void run() {
System.out.println("1当前线程ID:"+Thread.currentThread().getId());
}
}
public static void main(String[] args) throws InterruptedException {
/*System.out.println("主线程:"+Thread.currentThread().getId());
Mythread mythread = new Mythread();
mythread.run();
mythread.start();
System.out.println("******************************************************");
System.out.println("主线程:"+Thread.currentThread().getId());
Mythread1 mythread1 = new Mythread1();
mythread1.run();
Thread thread = new Thread(mythread1);
thread.start();*/
//mythread1.start();
ThreadTest test = new ThreadTest();
/*SleepClass p =test.new SleepClass();
SleepClass p1 = test.new SleepClass();
p.start();
p1.start();*/
/*YeildClass y = test.new YeildClass();
y.start();*/
//启动子线程
new JoinClass("new Thread").start();
for(int i=0;i<10;i++){
if(i==5){
Thread th = new JoinClass("thead");
th.start();
th.join();
}
System.out.println(Thread.currentThread().getName()+" "+i);
}
}
class SleepClass extends Thread{
@Override
public void run() {
synchronized (o){
i++;
System.out.println("i:"+i);
try {
System.out.println("线程:"+ Thread.currentThread().getName()+"进入睡眠");
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程"+Thread.currentThread().getName()+"睡眠结束");
i++;
System.out.println("i:"+i);
}
}
}
class YeildClass extends Thread{
public void run() {
long benginTime = System.currentTimeMillis();
int count = 0;
for(int i=0;i<500000;i++){
count = count +i;
Thread.yield();
}
long endTime = System.currentTimeMillis();
System.out.println("用时:"+(endTime-benginTime));
}
}
static class JoinClass extends Thread{
public JoinClass(String name){
super(name);
}
public void run() {
for (int i =0;i<5;i++){
System.out.println(this.getName()+" "+i);
}
}
}
}