java多线程编程系列-基础1-线程getName和setName的使用
?
? ? 多线程的实现方式有两种:
? ? 1.继承Thread类
? ? 2.实现了runnable接口
? ? 其实在Thread类内部也是实现了Runnable的接口的,写写代码印象更加深刻下面请看:
?
?
//继承Thread类package endual;public class MyThread extends Thread{public void run() {System.out.println("Hello word") ;}}
?Main的测试类:
package endual;public class MainThreadApp {public static void main(String[] args) {MyThread t = new MyThread() ;t.start() ; //这边用的是start(),可不要用run啊}}?
?实现借口的
?
package endual;public class MyThread2 implements Runnable{public void run() {System.out.println("Hello word") ;}}
?main的测试类
?
package endual;public class MainApp2 {public static void main(String[] args) { /* * 还记得我们实现了接口不 * 首先定义一个接口然后去实现这个接口 */Runnable rnn = new MyThread2() ;Thread tt = new Thread(rnn) ;tt.start() ;}}
?
这样是最基本的创建线程的两种方法。
?
?
下面我们来看给线程取名字:我们用的setName和getName的方法。
?取名字的话,可以在线程开始前,和线程运行的时候取名字的,但是
?我们约定了,要在线程开始前个线程取名字的,并且不要改变jvm线程的名字哦。
?
package endual;public class MainApp2 {public static void main(String[] args) { /* * 还记得我们实现了接口不 * 首先定义一个接口然后去实现这个接口 */Runnable rnn = new MyThread2() ;Thread tt = new Thread(rnn) ;tt.setName("我是线程1") ;tt.start() ; //tt.setName("我是线程1") ;不要这样取名字,请在start()前面取名字 ?}}?
这边还有一个知识点就是start()这个方法的启动的时刻哦。
?
start()方法同志线程规划器这个新线程已经准备好了,而且应当在规划器的最方便的时候调用这个线程的run()方法的,因为多线程编程的非确定性,程序员不可能确定线程何时会开始的,只知道调用start()是在说明要马上启动线程了。这也是我这个笔记想强调的一点。?
?
?
?
?
?
?