java多个线程
① java 多线程_如何顺序执行多个线程
可以,两个线程运行的时候让其他的等待(wait),结束的时候唤醒下两个就行了。
② 在java中同时起多个线程,然后怎么让多个线程进入等待状态
class MyThread extends Thread {
static Object lock = new Object();
public void run() {
// TODO Auto-generated method stub
}
public void toWait() {
synchronized(lock){
try {
lock.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void toNotifyAll(){
synchronized(lock){
lock.notifyAll();
}
}
}
//让线程对象在run方法中调用toWait使其等待,调用静态方法toNotifyAll唤醒所有线程
③ java 两个线程执行不同的方法
1、首先你要创建两个线程,比如你的线程类是temp1,temp2,new ThreadMy(),
2、你自己的线程类里面要必须重载run();还可以声明其它方法,
3、temp1.start();/启动你的线程,
④ java多线程如何创建多个多线程
Java 多线程的同步依靠的是对象锁机制,这个问题需要我们不断的学习相关的问题。下面我们就来详细的学习下如何才能更好的进行具体内容的使用。synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问。
下面以一个简单的实例来进行对比分析。实例要完成的工作非常简单,就是创建10个线程,每个线程都打印从0到99这100个数字,我们希望线程之间不会出现交叉乱序打印,而是顺序地打印。
先来看第一段代码,这里我们在run()方法中加入了synchronized关键字,希望能对run方法进行互斥访问,但结果并不如我们希望那样,这是因为这里synchronized锁住的是this对象,即当前运行线程对象本身。 Java 多线程代码中创建了10个线程,而每个线程都持有this对象的对象锁,这不能实现线程的同步。
Java多线程代码如下
1.package com.vista;
2.class MyThread implements java.lang.Runnable
3.{
4.private int threadId;
5.public MyThread(int id)
6.{
7.this.threadId = id;
8.}
9.@Override
10.public synchronized void run()
11.{
12.for (int i = 0; i < 100; ++i)
13.{
14.System.out.println("Thread ID: " + this.threadId + " : " + i);
15.}
16.}
17.}
18.public class ThreadDemo
19.{
20./**
21.* @param args
22.* @throws InterruptedException
23.*/
24.public static void main(String[] args) throws InterruptedException
25.{
26.for (int i = 0; i < 10; ++i)
27.{
28.new Thread(new MyThread(i)).start();
29.Thread.sleep(1);
30.}
31.}
32.}
以上就是对Java多线程的详细代码介绍。
⑤ java如何通过参数创建多个线程
for+new Thread
⑥ java 多个方法实现多线程
GUI中多线调用方法应该使用:SwingUtilities.invokeLater和invokeAndWait而不是普通情况下那样应用.
至于机器人控制内函数,你可以让程序在线程容中调用即可。没必要实现Runnable接口。
SwingUtilities你可以在网络中搜索它的用法。下面是一个简单的示例:
RunnabledoWorkRunnable=newRunnable(){
publicvoidrun(){doWork();}
};
SwingUtilities.invokeLater(doWorkRunnable);
你必须把要运行的代码放到一个Runnable对象的run()方法中,并将此Runnable对象设为invokeLater()的参数。invokeLater()方法会立即返回,不等待事件派发线程执行指定代码。
而不能像下面这样来用。因为会出现各种奇怪的问题。
Threadthread=newThread(doWorkRunnable);
thread.start();
⑦ java多个线程执行的顺序是按顺序执行的吗
这个要分段来实现, 第一步是让线程同步,第二部是让线程有顺序。
同步:我们可以用synchronized来解决。
Java线程同步原理: java会为每个object对象分配一个monitor,当某个对象的同步方法(synchronized methods )被多个线程调用时,该对象的monitor将负责处理这些访问的并发独占要求。
当一个线程调用一个对象的同步方法时,JVM会检查该对象的monitor。如果monitor没有被占用,那么这个线程就得到了monitor的占有权,可以继续执行该对象的同步方法;如果monitor被其他线程所占用,那么该线程将被挂起,直到monitor被释放。
当线程退出同步方法调用时,该线程会释放monitor,这将允许其他等待的线程获得monitor以使对同步方法的调用执行下去。就像下面这样:
public void test() {
synchronized (this) {
//做一些事
//这里只会有一个线程来调用该方法,因为只有一个this对象作为资源分配给该线程
}
}
顺序:我们可以用List来解决,因为它是有序的。我们只需要将要执行的线程放入到List中
上代码:
/**
* 让多个线程同步顺序执行的线程管理器
* @author bianrx
* @date 2012.1.18
* SynchronizedRunMultiThread
*/
public class SyncManager {
/**
* 待执行的线程集合,注意这里必须是Runnable接口类型,下面会解释
*/
private List<Runnable> runnableList;
public SyncManager(){}
public SyncManager(List<Runnable> runnableList) {
this.runnableList = runnableList;
}
public void setRunnable(List<Runnable> runnableList) {
this.runnableList = runnableList;
}
public void run() {
//遍历代执行的线程集合
for(Runnable runnable: runnableList) {
runThread(runnable);
}
}
/**
* 按顺序同步执行多个线程
* @author bianrx
* @date 2012.1.18
* @param runnable
*/
private void runThread(Runnable runnable) {
synchronized (this) {
runnable.run();//这里需要注意的是:必须调用run方法,因为如果你调用了start方法,线程只会向JVM请求资源,但是未必就执行其中的run。
//这个方法是同步的,所以当前只有一个线程占用了this对象。
}
}
}
⑧ java中多个线程访问一个方法,只有一个线程能够访问这个方法,而其他线程会被关闭,怎么做
1)可以在该方法上加一个同步锁,让其变为同步方法,这样每次就只有一个线程可以访问,而其他的线程只有等到他访问完之后才有机会访问。
2)可以在方法中设置参数count,访问时累加,然后判断。
一定要关闭的话,首先要判断是那一个线程访问了方法,之后将其他的关闭就可以了。
⑨ JAVA中如何利用多线程同时运行多个方法
首先,这个同时,只是在宏观上的,多线程环境,线程与线程之间,还是串回行运行的。
要“同时”运答行多个方法,那么,就需要创建多个线程,然后,在线程的run()方法里,写上你想要实现的逻辑。需如果创建多线程,这又是另一个问题(通过继承Thread跟实现Runnable来实现)。
⑩ 在java中,多线程真的是多个线程同时运行吗
一个处理器(cpu)在某一个时间点上永远都只能是一个线程!双核cpu你可以理解为两块cpu,4核、8核等以此类推,就单个cpu而言某个时间点只能是一个线程在运行, 所谓的多线程是通过调度获取cpu的时间片实现的 其实就相当于 cpu是一个人 多线程是几件事 cpu一下子干这件事 干一会儿时间片到了就干另一件 由于cpu计算速度很快很快 所以看起来就像几件事情在同时做着 不过现在cpu都是双核四核八核的 这些是真的一起干的 因为这是几个人干几件事 肯定是一起做的啦
不晓得这样比喻你可以理解不 这样不能理解我也么有办法啦