线程相关
Thread实现
package Test;
public class Test {
public static void main(String[] args) {
myThread m1 = new myThread("a");
myThread m2 = new myThread("b");
m1.start();
m2.start();
}
static class myThread extends Thread{
private String str;
public myThread(String str) {
this.str = str;
}
@Override
public void run() {
for(int i =0;i<10;i++){
System.out.println(str+"i="+i);
}
}
}
}
Runable实现
package Test;
public class Test {
public static void main(String[] args) {
myThread m1 = new myThread("a");
myThread m2 = new myThread("b");
Thread aThread = new Thread(m1);
Thread bThread = new Thread(m2);
aThread.start();
bThread.start();
}
static class myThread implements Runnable{
private String str;
public myThread(String str) {
this.str = str;
}
@Override
public void run() {
for(int i =0;i<10;i++){
System.out.println(str+"i="+i);
}
}
}
}
Runable和thread区别
资源共享时
各种方法
package Test;
public class Test {
public static void main(String[] args) {
myThread m1 = new myThread("a");
myThread m2 = new myThread("b");
m1.start();
try {
m1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
m2.start();
System.out.println(m2.isAlive());
}
static class myThread extends Thread{
private String str;
public myThread(String str) {
this.str = str;
}
@Override
public void run() {
for(int i =0;i<10;i++){
System.out.println(str+currentThread().getName()+"="+i);
}
}
}
}
Run内部同步代码块(用在runable内)
public void run() {
synchronized (this) {
while(t>0){
System.out.println(str+currentThread().getName()+"="+t--);
}
}
}
方法的同步
public void run() {
tell();
}
static synchronized void tell(){
/*想要的同步内容*/
}