java开启线程
⑴ java有几种实现线程的方式
有三种:
(1)继承Thread类,重写run函数
创建:class xx extends Thread{ public void run(){Thread.sleep(1000) //线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源}}
开启线程:对象.start() //启动线程,run函数运行
(2)实现Runnable接口,重写run函数
开启线程:Thread t = new Thread(对象) //创建线程对象t.start()
(3)实现Callable接口,重写call函数
Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。
⑵ JAVA开启三个线程,去读取数组中的数据不能重复
set中是不能存在重复数的。
这个可以通过修改数据的时间来判断。例如:表中有个字段读取时间。当这个客户读取10条数据的时候,更新读取时间为当前时间。然后下个客户读取的时候,判断时间在半个小时内,没有更新的数据。就OK了。
⑶ JAVA中如何控制线程的启动与暂停
<pre t="code" l="java">boolean run = true;
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(run){
// 所需执行的代码
}
}
});
按钮打开时,可以run = true; thread.start();开启线程
按钮关闭时, run = false; 线程自动关闭。
⑷ java 开启多线程里面如何加条件判断执行其他逻辑
package test; import java.util.concurrent.CountDownLatch;import java.util.concurrent.Executor;import java.util.concurrent.Executors; public class WatchThread { public void testThread() throws InterruptedException {int threadNum = 10;// 初始化countDownCountDownLatch threadSignal = new CountDownLatch(threadNum);// 创建固定长度的线程池Executor executor = Executors.newFixedThreadPool(threadNum);for (int i = 0; i < threadNum; i++) { // 开threadNum个线程Runnable task = new TestThread(threadSignal);// 执行executor.execute(task);}threadSignal.await(); // 等待所有子线程执行完// do workSystem.out.println(Thread.currentThread().getName() + "");} /*** 测试函数*/public static void main(String[] args) throws InterruptedException {WatchThread test = new WatchThread();test.testThread();} private class TestThread implements Runnable {private CountDownLatch threadsSignal; public TestThread(CountDownLatch threadsSignal) {this.threadsSignal = threadsSignal;} public void run() {System.out.println(Thread.currentThread().getName() + "开始...");// do shomethingSystem.out.println("开始了线程::::" + threadsSignal.getCount());// 线程结束时计数器减1threadsSignal.countDown();System.out.println(Thread.currentThread().getName() + "结束. 还有"+ threadsSignal.getCount() + " 个线程");}} }
⑸ JAVA如何重新启用一个线程
java实现多线程有2种方法:1扩展java.lang.Thread类;2实现java.lang.Runnable接口 下面举个例子,实现Runnable,来实现多线程 public class DoSomething implements Runnable { //实现Runnable接口 public void run() { // 实现run方法 for (int i = 0; i < 5; i++) { // 重复5次 System.out.println("次线程do something"); try { Thread.sleep(1000); //休眠1秒 } catch (Exception e) {} } } public static void main(String[] args) { DoSomething dothing = new DoSomething(); Thread t1 = new Thread(dothing); t1.start(); //这里就是楼主提的问题,启动线程,执行上面写的run()方法 for (int i = 0; i < 5; i++) { //主线程 System.out.println("主线程do something"); try { Thread.sleep(1000); //休眠1秒 } catch (Exception e) {} } } }
⑹ java怎么创建一个线程
Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类。可以用如下方式用java中创建一个线程:
Treadthread=newThread();
执行该线程可以调用该线程的start()方法:
thread.start();
编写线程运行时执行的代码有两种方式:一种是创建Thread子类的一个实例并重写run方法,第二种是创建类的时候实现Runnable接口。接下来我们会具体讲解这两种方法:
创建Thread的子类
创建Thread子类的一个实例并重写run方法,run方法会在调用start()方法之后被执行。例子如下:
{
publicvoidrun(){
System.out.println("MyThreadrunning");
}
}
可以用如下方式创建并运行上述Thread子类
MyThreadmyThread=newMyThread();
myTread.start();
一旦线程启动后start方法就会立即返回,而不会等待到run方法执行完毕才返回。就好像run方法是在另外一个cpu上执行一样。当run方法执行后,将会打印出字符串MyThread running。
实现Runnable接口
第二种编写线程执行代码的方式是新建一个实现了java.lang.Runnable接口的类的实例,实例中的方法可以被线程调用。下面给出例子:
{
publicvoidrun(){
System.out.println("MyRunnablerunning");
}
}
为了使线程能够执行run()方法,需要在Thread类的构造函数中传入MyRunnable的实例对象。示例如下:
Threadthread=newThread(newMyRunnable());
thread.start();
当线程运行时,它将会调用实现了Runnable接口的run方法。上例中将会打印出”MyRunnable running”。
⑺ java多线程有几种实现方法
继承Thread类来实现多线程:
当我们自定义的类继承Thread类后,该类就为一个线程类,该类为一个独立的执行单元,线程代码必须编写在run()方法中,run方法是由Thread类定义,我们自己写的线程类必须重写run方法。
run方法中定义的代码为线程代码,但run方法不能直接调用,如果直接调用并没有开启新的线程而是将run方法交给调用的线程执行
要开启新的线程需要调用Thread类的start()方法,该方法自动开启一个新的线程并自动执行run方法中的内容
*java多线程的启动顺序不一定是线程执行的顺序,各个线程之间是抢占CPU资源执行的,所有有可能出现与启动顺序不一致的情况。
CPU的调用策略:
如何使用CPU资源是由操作系统来决定的,但操作系统只能决定CPU的使用策略不能控制实际获得CPU执行权的程序。
线程执行有两种方式:
1.抢占式:
目前PC机中使用最多的一种方式,线程抢占CPU的执行权,当一个线程抢到CPU的资源后并不是一直执行到此线程执行结束,而是执行一个时间片后让出CPU资源,此时同其他线程再次抢占CPU资源获得执行权。
2.轮循式;
每个线程执行固定的时间片后让出CPU资源,以此循环执行每个线程执行相同的时间片后让出CPU资源交给下一个线程执行。
⑻ java有几种实现线程的方式
有三种:
(1)继承Thread类,重写run函数
创建:class xx extends Thread{ public void run(){Thread.sleep(1000)//线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源}}
开启线程:对象.start()//启动线程,run函数运行
(2)实现Runnable接口,重写run函数
开启线程:Thread t = new Thread(对象)//创建线程对象t.start()
(3)实现Callable接口,重写call函数
Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。
⑼ Java线程怎样使用
多进程是指操作系统能同时运行多个任务(程序),多线程是指在同一程序中有多个顺序流在执行。
在java中创建一个线程有两种方法:
packagecom.thread;
publicclassThreadTest1{
publicstaticvoidmain(String[]args){
Runnable1r=newRunnable1();
//r.run();并不是线程开启,而是简单的方法调用
Threadt=newThread(r);//创建线程
//t.run();//如果该线程是使用独立的Runnable运行对象构造的,则调用该Runnable对象的run方法;否则,该方法不执行任何操作并返回。
t.start();//线程开启
for(inti=0;i<100;i++){
System.out.println("main:"+i);
}
}
}
{
publicvoidrun(){
for(inti=0;i<100;i++){
System.out.println("Thread-----:"+i);
}
}
}