Thread创建线程

本文介绍了Java中多线程的基本概念及其实现方式,包括通过继承Thread类和实现Runnable接口两种方法,并通过示例展示了如何创建和启动线程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、  多线程的概念:多线程是实现并发控制的一种有效手段,线程是指程序运行的流程。

多线程是指可以同时运行多个程序块,是程序运行效率更高。

2、 一个进程包含多个线程;

线程是程序中的执行线程。Java 虚拟机允许应用程序并发多个执行线程。


3、 创建新执行线程有两种方法。一种方法是将类声明为Thread 的子类。该子类应重写Thread 类的run 方法。接下来可以分配并启动该子类的实例。如,计算大于某一规定值的质数的线程可以写成。


4、 创建Thread 线程的三个步骤:

  • 定义类继承 Thread;
  • 覆写 Thread 类中的run() 方法。目的:将自定义代码存储在run方法中;
  • 调用线程的start() 方法,该方法有两个作用,启动线程,调用run()方法。

public class Customer extends Thread{
    
    String name;
    public void run(){
        for(int i=0;i<10;i++){
            System.out.println(name+"\t"+i);
        }
    }
}
public class UseCustomer{
    public static void main(String args[]){
        Customer m=new Customer();
        m.name="a";
        Customer m1=new Customer();
        m1.name="b";
        m.rum();//主线线程主线线程线程
        m.start();
        m1.Start();
    }
}

例子:窗口卖票

public class ccticket extends Thread{
    String name;
    static int ticket=5;//在创建线程的时候,不建议用static
    public void run(){
	while(ticket>0){
	  System.out.println(name+"卖了第"+ticket+"票");
	}
}
}
public class Useccticket{
public static void main(String args[]){
	ccticket c=new ccticket();
	ccticket c1=new ccticket();
	c.name="1号窗口";
	c1.name="2号窗口";
	c.start();
	c2.start();
}
}

会出现bug,线程本身的问题。



5、另一种创建线程的方法,声明实现Runable 接口的类。(推荐使用)

  • 定义类实现 Runable 接口;
  • 覆盖 Thread 类来建立线程对象,将线程要运行的代码放入到run() 方法中;
  • 通过Thread 类来建立线程对象;
  • 将 Runable 接口的子类对象作为实际参数传递给Thread 类的构造函数;
  • 调用 Thread 类的Start() 方法开启线程并掉哦那个Runnable 接口子类的run() 方法。

public class Ticket implements Runable{
	private int ticket=1;
	public void run(){
	 	 while(ticket<6){
			show();
		}
	}
	public synchronized void show(){
		if(ticket<6){
		try{
		    Thread.sleep(10);
		}catch(Exception e){
			System.out.println(Thread.currentThread().getName()+"卖出去了第"+ticket+"票")
		}
			
			
		}
	}
}
public class Useticket{
	public static void main(String args[]){
		Ticket t=new Ticket();
		new Thread(t).start();
		new Thread(t).start();
	}
	

6、 Runable 接口和Thread继承类实现多线程区别

  •  Runable 接口可以避免由于Java单季承的局限性,更适合多个相同程序代码的线程去处理同一资源情况,实现资源共享。
  • 同步:一个多线程如果通过 Runable 接口实现,则意味着类中的属性被多个线程共享。
  • 如果多个线程操作同一资源,就有可能出现资源是否同步问题。
  • 在Thread 类之中可以发现有一个名为sleep(long millis) 的静态方法,此方法用于线程是休眠。(定义休眠的时间)
  • 解决这样的问题,必须使用同步来解决
  • 此线程完成后才可以继续进行
  • 同步可以通过同步块或同步方法来完成。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值