初步学习多线程
来源:互联网 发布:淘宝的减肥药有用吗 编辑:程序博客网 时间:2024/05/22 01:46
Java多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。
首先看一下线程的状态图
第一种实现多线程的方法:Thread
Thread实现多线程 ,本质上是实现了Runnable()接口的实例,线程的开启的唯一方法是调用Thread的start()方法不难看出,他仅仅只是处于了就绪状态,通过run()方法,走到运行状态,通过自己的方法直接extend Thread
在线程启动时执行自定义的run()方法,下面来一个小小的案例:
package Thread1;
public class MyThread extends Thread {
private int ticketNum = 10;
public MyThread(String name) {
super(name);
}
//线程体
public void run() {
for (int i = 1; i <= 100; i++) {
if (ticketNum > 0)
System.out.println(Thread.currentThread().getName() + ":卖票"
+ (ticketNum--));
}
}
}
package Thread1;
public class Test {
public static void main(String[] args) throws Exception {
Thread my=new MyThread("窗口一");
Thread my1=new MyThread("窗口二");
Thread my2=new MyThread("窗口三");
my.start();
my1.start();
my2.start();
前两个案例都是实现购票,但是两者存在差距,Thread的资源不是共享的
第二种实现多线程的方法Runnable()接口
package Thread1;
public class RunnableTest implements Runnable {
private int ticketNum = 10;
public void run() {
for (int i = 1; i <= 100; i++) {
if (ticketNum > 0)
System.out.println(Thread.currentThread().getName() + "卖票"
+ (ticketNum--));
}
}
}
RunnableTest run=new RunnableTest();
Thread t1=new Thread(run, "窗口1");
Thread t2=new Thread(run, "窗口2");
Thread t3=new Thread(run, "窗口3");
t1.start();
t2.start();
t3.start();
第三种使用ExecutorService、Callable、Future实现有返回结果的多线程,看下一个博客
- 多线程学习初步
- 多线程学习初步
- 多线程学习初步
- 多线程学习初步
- 多线程的初步学习
- java多线程初步学习
- 初步学习多线程
- 初步学习多线程的总结
- JAVA多线程学习初步经典实例
- 黑马程序员_多线程初步学习
- 进程、线程、多线程的初步学习
- 多线程初步
- 多线程初步
- 多线程初步
- 多线程初步
- Linux socket编程学习初步(5)--服务器多线程
- 关于网络编程架构的初步学习,多线程编程。
- JAVA学习第二十一课(多线程(一)) - (初步了解)
- 在这里书写人生
- Java实现-两数组的交2
- Unreal 4 Adding Detail Texture 添加细节纹理
- Leetcode551. Student Attendance Record I一趟遍历
- 安卓中Canvas使用方法
- 初步学习多线程
- 【设计模式】——适配器模式
- 导入新的工程,Studio会无响应问题
- Android编程添加图标
- Dubbo——HelloWorld
- 史上最全的SpringMVC学习笔记
- linux学习-1
- 【简记】Operating System——Dead Lock
- Android TV开发 焦点框