实现线程的两种方式
《零基础学Java》
-
实现线程的两种方式
Java提供了两种方式实现线程,分别为继承 java.lang.Thread类 与 实现 java.lang.Rumnable接口。
-
继承Thread类
Thread类 是 java.lang包 中的一个类,Thread类的对象用来代表线程,通过继承Thread类创建、启动并执行一个线程。
Thread类的常用方法:
继承Thread类 实例:
public class Demo { public static void main(String[] args) { Thread a = new ThreadA(); a.start(); Thread b = new ThreadB(); b.start(); } } class ThreadA extends Thread{//ThreadA 继承 Thread类 @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println(i); try { Thread.sleep(1000);//休眠(停顿)1000毫秒 } catch (InterruptedException e) { e.printStackTrace(); } } } } class ThreadB extends Thread{//ThreadB 继承 Thread类 @Override public void run() { for (char i = 'a'; i < 'z'; i++) { System.out.println(i); try { Thread.sleep(1000);//休眠(停顿)1000毫秒 } catch (InterruptedException e) { e.printStackTrace(); } } } }
-
实现Runnable接口
如果当前类不仅要继承其他类(非Thread类),还要实现多线程,那么只能通过当前类实现Runnable接口来创建Thread类对象。
实现Runnable接口的程序会创建一个Thread对象,并将Runnable接口的对象target作为其运行对象。
Thread类的构造方法:
构造方法 介绍 public Thread(Runnable target); 创建一个新的 Thread 对象。 public Thread(Runnable target , String name); 创建一个新的 Thread 对象,并指定名字。 实现Runnable接口 实例:
import javax.swing.*; import java.awt.*; public class Demo1 extends JFrame implements Runnable { private JLabel jLabel = new JLabel(); private int count = 0; private Container c = getContentPane(); public Demo1(){ setBounds(400,200,250,100); c.setLayout(null); try{ Icon icon = new ImageIcon("src/setting.png"); jLabel.setIcon(icon); }catch (NullPointerException e){ System.out.println("图片不存在"); return; } jLabel.setHorizontalAlignment(SwingConstants.LEFT); jLabel.setBounds(10,10,200,50); jLabel.setOpaque(true); c.add(jLabel); setVisible(true); } public static void main(String[] args) { Demo1 demo1 = new Demo1(); Thread thread = new Thread(demo1); thread.start(); } @Override public void run() { int i = 10; while (true){ jLabel.setBounds(i,10,200,50); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } i+=5; if (i>=200){ i=10; } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!