您的位置:首页 > 其它

Thread和Runnable一些区别以及线程的同步

2015-10-26 15:43 423 查看
一、Thread的用法,private class MyThread extends Thread {

@Override

public void run() {

for (int k = 0; k < 10; k++) {

i = i + 1;

System.out.println(Thread.currentThread().getName() + "正在执行。。。" + i);

}

}

}

二、实现Runable接口,private class MyThread1 implements Runnable {

public void run() {

for (int k = 0; k < 10; k++) {

i = i + 1;

System.out.println(Thread.currentThread().getName() + "正在执行" + i);

}

}

}

开启线程,MyThread t = new MyThread(); 

MyThread t1 = new MyThread();

t.start();t1.start();如果是t.run();t1.run();运行的就是主main线程,而t,t1两个线程都未开启

实现Runable接口

  MyThread1 t = new MyThread1();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();

都是交替执行的。

线程同步

private class MyThread extends Thread {
@Override
public synchronized void run() {
for (int k = 0; k < 10; k++) {
i = i + 1;
System.out.println(Thread.currentThread().getName() + "正在执行。。。" + i);
}
}
}

private class MyThread1 implements Runnable {
public synchronized void run() {
for (int k = 0; k < 10; k++) {
i = i + 1;
System.out.println(Thread.currentThread().getName() + "正在执行" + i);
}
}
}

实现Runable接口

MyThread1 t = new MyThread1();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();

执行的就是按照顺序来执行,线程一执行到10,然后开始执行线程二到20,。。。。

继承Thread

MyThread t = new MyThread();
MyThread t1 = new MyThread();
MyThread t2 = new MyThread();
MyThread t3 = new MyThread();
MyThread t4 = new MyThread();

t.start();
t1.start();
t2.start();
t3.start();
t4.start();

执行的结果就是无序的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: