我们的电脑可以运行多个进程,是因为我们的CPU能够处理并列操作,软件也是一样,我们可以对这个软件执行多种操作,而并不会造成软件的卡死。我们生活中的购票的例子也是一样,我们的火车站买票有多个窗口并行的操作,这样的话就不会造成火车站的堵死。
就拿购票这个例子来说吧
class Test extends Thread {
private static int tickets = 100;//让每次一进类就加载进来了,防止了会产生400张票
public void run() {
while(true) {
if(tickets > 0) {
System.out.println(Thread.currentThread().getName() + tickets–);
}else {
break;
}
}
}
}
public class Demo {
public static void main(String[] args) {
Test test = new Test();
test.setName(“test 0 “);
test.start();
Test test2 = new Test();
test2.setName(“test 1 “);
test2.start();
}
}
线程的另外一种定义方式:
class Test implements Runnable {
private int tickets = 100;
public void run() {
while(true) {
if(tickets > 0) {
System.out.println(tickets–);
}else {
break;
}
}
}
}
public class TestThread {
public static void main(String[] args) {
Test test = new Test();
Thread t1 = new Thread(test);
Thread t2 = new Thread(test);
t1.start();
t2.start();
}
}
这种实现方式非常普遍,所以自己必须掌握它
那么上述这两种方式有什么区别与联系/p>
1.为了避免多继承的问题,当我们一个类已经继承了另外一个类的时候,我们需要用线程来执行run()方法里面的代码的时候,我们就可以使用Runnable接口来实现
2.Runnable r = new Runnable(); Thread t1 = new Thread(r); t1.start();
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树Java异步任务线程与进程92016 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!