Java中线程的创建有四i种方式:
1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中
2. 通过实现Runnable接口,实例化Thread类
3、应用程序可以使用Executor框架来创建线程池
4、实现Callable接口
一、通过继承Thread类实现多线程
class MyThread extends Thread{ String name = null; int ticket = 0; public MyThread(String name){ this.name = name; } public synchronized void run(){ for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName()+this.name+" ticket:"+ticket++); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
实现方式:
public class TestThread { public static void main(String args[]) { MyThread mThread1 = new MyThread("线程一"); MyThread mThread2 = new MyThread("线程二"); MyThread mThread3 = new MyThread("线程三"); mThread1.start(); mThread2.start(); mThread3.start(); } }
输出结果:
Thread-0线程一 ticket:0 Thread-1线程二 ticket:0 Thread-2线程三 ticket:0 Thread-2线程三 ticket:1 Thread-1线程二 ticket:1 Thread-0线程一 ticket:1 Thread-2线程三 ticket:2 Thread-0线程一 ticket:2 Thread-1线程二 ticket:2 Thread-2线程三 ticket:3 Thread-0线程一 ticket:3 Thread-1线程二 ticket:3 Thread-2线程三 ticket:4 Thread-0线程一 ticket:4 Thread-1线程二 ticket:4
二、通过继承Runnable接口实现多线程
class RunThread implements Runnable{ int Counter = 0; @Override public synchronized void run() { for(int i=0;i<5;i++){ System.out.println(Thread.currentThread().getName()+"count:"+Counter++); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
实现方式:
public class TestRunnable { public static void main(String args[]) { RunThread rThread = new RunThread(); Thread t1 = new Thread(rThread,"线程一"); Thread t2 = new Thread(rThread,"线程二"); Thread t3 = new Thread(rThread,"线程三"); t1.start(); t2.start(); t3.start(); } }
输出结果:
线程一count:0 线程一count:1 线程一count:2 线程一count:3 线程一count:4 线程二count:5 线程二count:6 线程二count:7 线程二count:8 线程二count:9 线程三count:10 线程三count:11 线程三count:12 线程三count:13 线程三count:14
三、总结
实现Runnable接口相对于继承Thread类来说,有以下显著优势:
(1)适合多个相同程序代码的线程去处理同一资源的情况(资源共享)
(2)可以避免由于Java的单继承特性带来的局限,一个类可以继承多个接口
(3)挣钱了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的
追梦的脚步,永不停息
今天的文章java创建线程的方式有哪些_object类的方法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/47717.html