java线程实现机制:
1.继承Thread类,并实现run方法。2.传递Runnable类。
例如:
























创建线程调用的是默认的构造函数.启动线程是使用的start()函数,这个是父类Thread的方法。start()被调用后,回自动的调用run()方法。另一种创建线程的方法:












有时候我们想让刚才的打印按顺序的输出。如果把刚才的run函数中的for循环10次以上,可能将不会是想要的顺序输出的。要使得线程按顺序输出采用synchronized 关键字。例如下面的函数



































这里使用了synchronized关键字。但是打印出来的东西依然不是有序的。这并不是synchronized出现了问题。而是synchronized用于锁定一个对象,或者对象的一个方法。但是对于以上的那个程序。每次new一个TestThread都产生了一个新的对象。而每一个新的对象也有一个print方法。这就没有使synchronized发挥作用。如果这个print方法前加入了static关键字,这个程序便有序输出。
同时也说明java与c++的小小不同。在c++中类的函数并不是归属于类的。也就是说c++的函数有唯一的入口地址。而java则有些不同。不知道是不是每一个非static函数都有对于对象而言的,也不知道是不是每生产一个对象都有一个函数地址。有待研究。。。。。