2种线程的实现
继承Thread类
示例
public class Mythread extends Thread {
private String name;
public Mythread(String name) {
this.name = name;
}
public void run(){
for (int i = 0; i < 10; i++) {
System.out.println(this.name +":"+i);
}
super.run();
}
}
public class ThreadTest {
public static void main(String[] args) {
Mythread a = new Mythread("a");
Mythread b = new Mythread("b");
a.start();
b.start();
}
}
实现Runnable接口
示例
public class Myrunable implements Runnable {
private String name;
public Myrunable (String name) {
this.name = name;
}
public void run(){
for (int i = 0; i < 10; i++) {
System.out.println(this.name +":"+i);
}
}
}
public class ThreadTest {
public static void main(String[] args) {
Myrunable r1 = new Myrunable("a");
Myrunable r2 = new Myrunable("b");
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
}
}
线程常用方法
getName();
currentThread();
isAlive();
join();
yield();
sleep();
线程的优先级
![这里写图片描述](https://img-blog.csdn.net/20161126124115248)
示例
class test implements Runnable {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int j = 0; j < 1000; j++) {
System.out.println(Thread.currentThread().getName() + ":" + j);
}
}
}
public class ThreadTest {
public static void main(String[] args) {
Thread t1 = new Thread(new test() , "a");
Thread t2 = new Thread(new test() , "b");
Thread t3 = new Thread(new test() , "c");
t1.setPriority(Thread.MIN_PRIORITY);
t2.setPriority(Thread.MAX_PRIORITY);
t3.setPriority(Thread.NORM_PRIORITY);
t1.start();
t2.start();
t3.start();
}
}
同步
class test implements Runnable {
private int ticket = 50;
public void run() {
for (int i = 0; i < 100; i++) {
synchronized (this) {
if (ticket > 0) {
System.out.println(Thread.currentThread().getName() + "车票" + ticket--);
}
}
}
}
}
public class ThreadTest {
public static void main(String[] args) {
test m1 = new test();
Thread t1 = new Thread(m1);
Thread t2 = new Thread(m1);
Thread t3 = new Thread(m1);
t1.start();
t2.start();
t3.start();
}
}
class test implements Runnable {
private int ticket = 50;
public void run() {
for (int i = 0; i < 100; i++) {
tell();
}
}
public synchronized void tell() {
if (ticket > 0) {
System.out.println(Thread.currentThread().getName() + "车票" + ticket--);
}
}
}
public class ThreadTest {
public static void main(String[] args) {
test m1 = new test();
Thread t1 = new Thread(m1);
Thread t2 = new Thread(m1);
Thread t3 = new Thread(m1);
t1.start();
t2.start();
t3.start();
}
}