Java多线程初学者指南(7):向线程传送数据的三种办法[Java编程]
本文“Java多线程初学者指南(7):向线程传送数据的三种办法[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在传统的同步开辟情势下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回终究的计算后果.但在多线程的异步开辟情势下,数据的传送和返回和同步开辟情势有很大的辨别.由于线程的运行和完毕是不可意料的,因此,在传送和返回数据时就无法象函数一样通过函数参数和return语句来返回数据.本文就以上缘由介绍了几种用于向线程传送数据的办法,在下一篇文章中将介绍从线程中返回数据的办法.
欲先取之,必先予之.普通在利用线程时都需求有一些初始化数据,然后线程操纵这些数据举行加工处理,并返回后果.在这个历程中最早要做的就是向线程中传送数据.
1、通过构造办法传送数据
在成立线程时,必必要成立一个Thread类的或其子类的实例.因此,我们不难想到在调用start办法之前通过线程类的构造办法将数据传入线程.并将传入的数据利用类变量保存起来,以便线程利用(其实就是在run办法中利用).下面的代码演示了若何通过构造办法来传送数据:
package mythread; public class MyThread1 extends Thread { private String name; public MyThread1(String name) { this.name = name; } public void run() { System.out.println("hello " + name); } public static void main(String[] args) { Thread thread = new MyThread1("world"); thread.start(); } } |
由于这种办法是在成立线程对象的同时传送数据的,因此,在线程运行之前这些数据就就已经到位了,这样就不会造成数据在线程运行后才传入的现象.假如要传送更复杂的数据,可以利用调集、类等数据构造.利用构造办法来传送数据固然对比安全,但假如要传送的数据对比多时,就会造成很多不便.由于Java没有默许参数,要想实现近似默许参数的效果,就得利用重载,这样不但使构造办法本身过于复杂,又会使构造办法在数目上大增.因此,要想避免这种情形,就得通过类办法或类变量来传送数据.
2、通过变量和办法传送数据
向对象中传入数据普通有两次机会,第一次机会是在成立对象时通过构造办法将数据传入,别的一次机会就是在类中定义一系列的public的办法或变量(也可称之为字段).然后在成立完对象后,通过对象实例一一赋值.下面的代码是对MyThread1类的改版,利用了一个setName办法来设置name变量:
package mythread; public class MyThread2 implements Runnable { private String name; public void setName(String name) { this.name = name; } public void run() { System.out.println("hello " + name); } public static void main(String[] args) { MyThread2 myThread = new MyThread2(); myThread.setName("world"); Thread thread = new Thread(myThread); thread.start(); } } |
以上是“Java多线程初学者指南(7):向线程传送数据的三种办法[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |