java中线程的使用(未完)

本文介绍Java中线程的基础使用方法,包括通过扩展Thread类及实现Runnable接口创建线程,同时探讨了线程同步的重要性并给出示例。

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

简单的使用线程

1 . 扩展java.lang.Thread类

/**
*定义线程类
*/
public class MyThread extends Thread {  
  public void run() {  
   System.out.println("MyThread.run()");  
  }  
}  
//使用线程
MyThread myThread1 = new MyThread();  
MyThread myThread2 = new MyThread();  
myThread1.start();  
myThread2.start();

2 . 实现java.lang.Runnable接口

/** 
* 实现Runnable接口的类
*/ 
publicclass DoSomethingimplements Runnable {
    private String name;

    public DoSomething(String name) {
        this.name = name;
    } 

    publicvoid run() {
        for (int i = 0; i < 5; i++) {
            for (long k = 0; k < 100000000; k++) ;
            System.out.println(name + ": " + i);
        } 
    } 
}
/** 
* 测试Runnable类实现的多线程程序
*/ 
publicclass TestRunnable {
    publicstaticvoid main(String[] args) {
        DoSomething ds1 = new DoSomething("阿三");
        DoSomething ds2 = new DoSomething("李四");

        Thread t1 = new Thread(ds1);
        Thread t2 = new Thread(ds2);

        t1.start(); 
        t2.start(); 
    } 
}

线程的同步与锁

线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。
例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。

public class Foo {
    privateint x = 100;

    publicint getX() {
        return x;
    } 

    publicint fix(int y) {
        x = x - y; 
        return x;
    } 
}
public class MyRunnable implements Runnable {
    private Foo foo =new Foo(); 

    public staticvoid main(String[] args) {
        MyRunnable r = new MyRunnable();
        Thread ta = new Thread(r,"Thread-A"); 
        Thread tb = new Thread(r,"Thread-B"); 
        ta.start(); 
        tb.start(); 
    } 

    public void run() {
        for (int i = 0; i < 3; i++) {
            this.fix(30);
            try {
                Thread.sleep(1); 
            } catch (InterruptedException e) {
                e.printStackTrace(); 
            } 
            System.out.println(Thread.currentThread().getName() + " :当前foo对象的x值= " + foo.getX());
        } 
    } 

    publicint fix(int y) {
        return foo.fix(y);
    } 
}

运行结果:

Thread-B :当前foo对象的x值= 40
Thread-A :当前foo对象的x值= 40
Thread-B :当前foo对象的x值= -20
Thread-A :当前foo对象的x值= -20
Thread-B :当前foo对象的x值= -80
Thread-A :当前foo对象的x值= -80
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值