java 多线程的实现
简单的说,java多线程分两种形式,继承Thread类,实现Runnable接口。
继承Thread类
public class TestThread extends Thread{
public void run(){
//do work
}
public static void main(String[] args){
Thread tt = new TestThread();
tt.start();
}
}
实现Runnable接口
public class TestThread implements Runnable{
public void run(){
//do work
}
public static void main(String[] args){
Thread tt = new Thread(new TestThread()); (A)
tt.start();
}
}
感觉相差不大,其实本质上是一样的,看Thread类的源码,
public class Thread implements Runnable
可以看到Thread自己实现了Runnable接口,再看Thread类中的run()方法
@Override
public void run() {
if (target != null) {
target.run();
}
}
执行了target的run()方法,target是初始化时带进来的实现了Runnable的类,在上述的代码(A)处,所以我们最终都是执行了被实现的Runnable中的run()方法。
多线程的开始方法start()方法,中调用start0()方法,可以看到这个方法是个native方法,它会重新启动个线程执行run()方法。所以多线程调用使用start(),
直接调用run()方法。
在jdk1.5以后,多了个java.util.concurrent包,这个包里提供了一些新的多线程相关的类。
其中类似Runnable接口的Callable接口,实现其中的call()方法,就可以被ExecutorService类执行,当然底层还是转换成了Thread执行。
所以java多线程可以概括成,Thread通过调用native的start0方法新启动了个线程,执行run()方法。
分享到:
相关推荐
Java多线程实现异步调用实例。运行Main可以看到结果。main是主线程,另有A,B,C三个线程用不同的时间跑完。
java多线程实现TCP连接UDP聊天的聊天程序
Java多线程实现.pdf
java一些简单的多线程用法,适合初学者
java多线程实现大批量数据切分成指定份数的数据,然后多线程处理入库或者导出,线程的个数和每份数据的数量都可以控制
用Java多线程实现数据结构算法动态演示.caj
java多线程实现一个控制台聊天室 java多线程实现一个控制台聊天室
编写一个“生产者-消费者”的多线程演示程序,两个生产者,一个消费者,可以存放产品的仓库容量为10,仓库用栈实现,并有同步功能,且能防止先消费后生产的情况。
java多线程实现生产者和消费者
java 多线程实现动画控制
基于Java多线程实现所有顶点间最短路径的并行算法
java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号 java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号
使用java多线程实现流星和月食的效果,带有详细的代码以及效果截图,代码完整且不存在错误可以共新手学习。
使用Java多线程实现管道过滤器,本文档写了六个线程,五个管道,内容很简单,如果想要复杂功能请手动添加。
java多线程实现生产者消费者关系,完成线程之间的同步。
Java多线程实现 自定义 的 回调函数. 手写 完成,亲测 完成,可以 直接运行,Demo ,具有一定参考价值,供大家阅读 下载,谢谢
Java多线程实现多兵种攻击炮塔案例,利用java线程池,实现多兵种对炮塔的攻击操作。
使用java多线程实现一个动画 ,一个男孩和一个女孩分别从宿舍走到饭堂,在饭堂相遇,然后一起去上课。
使用java多线程实现女孩跳舞动画,可切换其他动画,可调节动画播放速度.