package com.zzk.test;
//同样一个线程类可以起两个线程
public class Test {
public static void main(String[] args) {
Runner r=new Runner();
Thread t1=new Thread(r);
Thread t2=new Thread(r);
t1.start();
t2.start();
}
}
class Runner implements Runnable {
public void run() {
for(int i=0;i<30;i++) {
System.out.println("No. "+i);
}
}
}
package com.zzk.test;
//sleep方法
public class Test {
public static void main(String[] args) {
Runner r=new Runner();
Thread t=new Thread(r);
t.start();
}
}
class Runner implements Runnable {
public void run() {
for(int i=0;i<30;i++) {
if(i%10==0 && i!=0) {
try {
Thread.sleep(2000);
}catch(InterruptedException e) {}
}
System.out.println("No. "+i);
}
}
}
package com.zzk.test;
//正确停止一个线程
public class Test {
public static void main(String[] args) {
Runner r=new Runner();
Thread t=new Thread(r);
t.start();
for(int i=0;i<100000;i++) {
if(i%10000==0&i>0)
System.out.println("in thread main i="+i);
}
System.out.println("Thread main is over");
r.shutDown();
}
}
class Runner implements Runnable {
private boolean flag=true;
public void run() {
int i=0;
while (flag==true) {
System.out.print(" "+i++);
}
}
public void shutDown() {
flag=false;
}
}
package com.zzk.test;
public class Test {
public static void main(String[] args) {
Runner r=new Runner();
Thread t=new Thread(r);
t.start();
try {
t.join();
}catch(InterruptedException e) {
}
for(int i=0;i<50;i++) {
System.out.println("主线程:"+i);
}
}
}
class Runner implements Runnable {
public void run() {
for(int i=0;i<50;i++) {
System.out.println("SubThread: "+i);
}
}
}
package com.zzk.test;
public class Test {
public static void main(String[] args) {
Thread t=new Runner();
t.start();
for(int i=0;i<50;i++) {
System.out.println("MainThread: "+i);
}
}
}
class Runner extends Thread {
public void run() {
System.out.println(Thread.currentThread().isAlive());
for(int i=0;i<50;i++) {
System.out.println("SubThread: "+i);
}
}
}
package com.zzk.test;
public class Test implements Runnable {
Timer timer=new Timer();
public static void main(String[] args) {
Test test=new Test();
Thread t1=new Thread(test);
Thread t2=new Thread(test);
t1.setName("t1");
t2.setName("t2");
t1.start();
t2.start();
}
public void run() {
timer.add(Thread.currentThread().getName());
}
}
//class Timer {
// private static int num=0;
//
// public void add(String name) {
// synchronized(this) {//锁定某一个东西
// num++;
// try {Thread.sleep(1);}
// catch(InterruptedException e) {}
// System.out.println(name+",你是第"+num+"个使用timer的线程");
// }
// }
//}
class Timer {
private static int num=0;
public synchronized void add(String name) {//锁定当前对象
num++;
try {Thread.sleep(1);}
catch(InterruptedException e) {}
System.out.println(name+",你是第"+num+"个使用timer的线程");
}
}
输出:
t1,你是第1个使用timer的线程
t2,你是第2个使用timer的线程