Java 实现多线程

发布于 2023-05-27 10:06:37 字数 1569 浏览 43 评论 0

Thread 类本身也是实现了 Runnable 接口,而 run() 方法最先是在 Runnable 接口中定义的方法。

class MyThread extends Thread {
	@Override
	public void run(){
		for (i = 0; i < 100; i++) {
        System.out.println(Thread.currentThread().getName() + " " + i);
    }
	}
}
class MyThread1 implements Runnable {
	@Override
	public void run(){
		for (i = 0; i < 100; i++) {
        System.out.println(Thread.currentThread().getName() + " " + i);
    }
	}
}
public class ThreadTest {
  public static void main(String[] args) {
    Callable<Integer> myCallable = new MyCallable();  // 创建MyCallable对象
    FutureTask<Integer> ft = new FutureTask<Integer>(myCallable); //使用FutureTask来包装MyCallable对象
    for (int i = 0; i < 100; i++) {
      System.out.println(Thread.currentThread().getName() + " " + i);
      if (i == 30) {
        Thread thread = new Thread(ft);   //FutureTask对象作为Thread对象的target创建新的线程
        thread.start();            //线程进入到就绪状态
      }
    }
    System.out.println("主线程for循环执行完毕..");
    try {
      int sum = ft.get();      //取得新创建的新线程中的call()方法返回的结果
      System.out.println("sum = " + sum);
    } catch (InterruptedException e) {
      e.printStackTrace();
    } catch (ExecutionException e) {
      e.printStackTrace();
    }
  }
}
class MyCallable implements Callable<Integer> {
  private int i = 0;
  // 与run()方法不同的是,call()方法具有返回值
  @Override
  public Integer call() {
    int sum = 0;
    for (; i < 100; i++) {
      System.out.println(Thread.currentThread().getName() + " " + i);
      sum += i;
    }
    return sum;
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
23 人气
更多

推荐作者

金兰素衣

文章 0 评论 0

ゃ人海孤独症

文章 0 评论 0

一枫情书

文章 0 评论 0

清晰传感

文章 0 评论 0

mb_XvqQsWhl

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文